// Path: app/src/main/java/com/nilhcem/devfestnantes/data/app/model/ScheduleSlot.java
// @Value
// public class ScheduleSlot implements Parcelable {
// 
//     public static final Parcelable.Creator<ScheduleSlot> CREATOR = new Parcelable.Creator<ScheduleSlot>() {
//         public ScheduleSlot createFromParcel(Parcel source) {
//             return new ScheduleSlot(source);
//         }
// 
//         public ScheduleSlot[] newArray(int size) {
//             return new ScheduleSlot[size];
//         }
//     };
// 
//     LocalDateTime time;
//     List<Session> sessions;
// 
//     public ScheduleSlot(LocalDateTime time, List<Session> sessions) {
//         this.time = time;
//         this.sessions = sessions;
//     }
// 
//     protected ScheduleSlot(Parcel in) {
//         time = (LocalDateTime) in.readSerializable();
//         sessions = in.createTypedArrayList(Session.CREATOR);
//     }
// 
//     @Override
//     public int describeContents() {
//         return 0;
//     }
// 
//     @Override
//     public void writeToParcel(Parcel dest, int flags) {
//         dest.writeSerializable(time);
//         dest.writeTypedList(sessions);
//     }
// }
// 
// Path: app/src/main/java/com/nilhcem/devfestnantes/data/app/model/Session.java
// @Value
// public class Session implements Parcelable {
// 
//     public static final Parcelable.Creator<Session> CREATOR = new Parcelable.Creator<Session>() {
//         public Session createFromParcel(Parcel source) {
//             return new Session(source);
//         }
// 
//         public Session[] newArray(int size) {
//             return new Session[size];
//         }
//     };
// 
//     int id;
//     String room;
//     List<Speaker> speakers;
//     String title;
//     String description;
//     LocalDateTime fromTime;
//     LocalDateTime toTime;
// 
//     public Session(int id, String room, List<Speaker> speakers, String title, String description, LocalDateTime fromTime, LocalDateTime toTime) {
//         this.id = id;
//         this.room = room;
//         this.speakers = speakers;
//         this.title = title;
//         this.description = description;
//         this.fromTime = fromTime;
//         this.toTime = toTime;
//     }
// 
//     protected Session(Parcel in) {
//         id = in.readInt();
//         room = in.readString();
//         speakers = in.createTypedArrayList(Speaker.CREATOR);
//         title = in.readString();
//         description = in.readString();
//         fromTime = (LocalDateTime) in.readSerializable();
//         toTime = (LocalDateTime) in.readSerializable();
//     }
// 
//     @Override
//     public int describeContents() {
//         return 0;
//     }
// 
//     @Override
//     public void writeToParcel(Parcel dest, int flags) {
//         dest.writeInt(id);
//         dest.writeString(room);
//         dest.writeTypedList(speakers);
//         dest.writeString(title);
//         dest.writeString(description);
//         dest.writeSerializable(fromTime);
//         dest.writeSerializable(toTime);
//     }
// }
// 
// Path: app/src/main/java/com/nilhcem/devfestnantes/ui/BaseActivityPresenter.java
// public abstract class BaseActivityPresenter<V> extends BasePresenter<V> {
// 
//     public BaseActivityPresenter(V view) {
//         super(view);
//     }
// 
//     public void onPostCreate(Bundle savedInstanceState) {
//         // Nothing to do by default
//     }
// 
//     public void onResume() {
//         // Nothing to do by default
//     }
// 
//     @CallSuper
//     public void onSaveInstanceState(Bundle outState) {
//         Icepick.saveInstanceState(this, outState);
//     }
// 
//     @CallSuper
//     public void onRestoreInstanceState(Bundle savedInstanceState) {
//         Icepick.restoreInstanceState(this, savedInstanceState);
//     }
// 
//     public void onNavigationItemSelected(@IdRes int itemId) {
//         // Nothing to do by default
//     }
// 
//     public boolean onBackPressed() {
//         return false;
//     }
// }
// 
// Path: app/src/main/java/com/nilhcem/devfestnantes/utils/Strings.java
// public class Strings {
// 
//     private Strings() {
//         throw new UnsupportedOperationException();
//     }
// 
//     public static String capitalizeFirstLetter(@NonNull String src) {
//         return src.substring(0, 1).toUpperCase(Locale.getDefault()) + src.substring(1);
//     }
// }


import android.content.Context;
import android.os.Bundle;
import com.nilhcem.devfestnantes.R;
import com.nilhcem.devfestnantes.data.app.model.ScheduleSlot;
import com.nilhcem.devfestnantes.data.app.model.Session;
import com.nilhcem.devfestnantes.ui.BaseActivityPresenter;
import com.nilhcem.devfestnantes.utils.Strings;
import org.threeten.bp.LocalDateTime;
import org.threeten.bp.format.DateTimeFormatter;
import org.threeten.bp.format.FormatStyle;
import java.util.List;
import java.util.Locale;
package com.nilhcem.devfestnantes.ui.sessions.list;





public class SessionsListPresenter extends BaseActivityPresenter<SessionsListMvp.View> {

    private final List<Session> sessions;

    public SessionsListPresenter(Context context, SessionsListMvp.View view, ScheduleSlot slot) {
        super(view);
        this.view.initToobar(formatDateTime(context, slot.getTime()));
        sessions = slot.getSessions();
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        this.view.initSessionsList(sessions);
    }

    private String formatDateTime(Context context, LocalDateTime dateTime) {
        String dayPattern = context.getString(R.string.schedule_pager_day_pattern);
        DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern(dayPattern, Locale.getDefault());
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);

        String formatted = context.getString(R.string.schedule_browse_sessions_title_pattern,
                dateTime.format(dayFormatter),
                dateTime.format(timeFormatter));
// Path: app/src/main/java/com/nilhcem/devfestnantes/data/app/model/ScheduleSlot.java
// @Value
// public class ScheduleSlot implements Parcelable {
// 
//     public static final Parcelable.Creator<ScheduleSlot> CREATOR = new Parcelable.Creator<ScheduleSlot>() {
//         public ScheduleSlot createFromParcel(Parcel source) {
//             return new ScheduleSlot(source);
//         }
// 
//         public ScheduleSlot[] newArray(int size) {
//             return new ScheduleSlot[size];
//         }
//     };
// 
//     LocalDateTime time;
//     List<Session> sessions;
// 
//     public ScheduleSlot(LocalDateTime time, List<Session> sessions) {
//         this.time = time;
//         this.sessions = sessions;
//     }
// 
//     protected ScheduleSlot(Parcel in) {
//         time = (LocalDateTime) in.readSerializable();
//         sessions = in.createTypedArrayList(Session.CREATOR);
//     }
// 
//     @Override
//     public int describeContents() {
//         return 0;
//     }
// 
//     @Override
//     public void writeToParcel(Parcel dest, int flags) {
//         dest.writeSerializable(time);
//         dest.writeTypedList(sessions);
//     }
// }
// 
// Path: app/src/main/java/com/nilhcem/devfestnantes/data/app/model/Session.java
// @Value
// public class Session implements Parcelable {
// 
//     public static final Parcelable.Creator<Session> CREATOR = new Parcelable.Creator<Session>() {
//         public Session createFromParcel(Parcel source) {
//             return new Session(source);
//         }
// 
//         public Session[] newArray(int size) {
//             return new Session[size];
//         }
//     };
// 
//     int id;
//     String room;
//     List<Speaker> speakers;
//     String title;
//     String description;
//     LocalDateTime fromTime;
//     LocalDateTime toTime;
// 
//     public Session(int id, String room, List<Speaker> speakers, String title, String description, LocalDateTime fromTime, LocalDateTime toTime) {
//         this.id = id;
//         this.room = room;
//         this.speakers = speakers;
//         this.title = title;
//         this.description = description;
//         this.fromTime = fromTime;
//         this.toTime = toTime;
//     }
// 
//     protected Session(Parcel in) {
//         id = in.readInt();
//         room = in.readString();
//         speakers = in.createTypedArrayList(Speaker.CREATOR);
//         title = in.readString();
//         description = in.readString();
//         fromTime = (LocalDateTime) in.readSerializable();
//         toTime = (LocalDateTime) in.readSerializable();
//     }
// 
//     @Override
//     public int describeContents() {
//         return 0;
//     }
// 
//     @Override
//     public void writeToParcel(Parcel dest, int flags) {
//         dest.writeInt(id);
//         dest.writeString(room);
//         dest.writeTypedList(speakers);
//         dest.writeString(title);
//         dest.writeString(description);
//         dest.writeSerializable(fromTime);
//         dest.writeSerializable(toTime);
//     }
// }
// 
// Path: app/src/main/java/com/nilhcem/devfestnantes/ui/BaseActivityPresenter.java
// public abstract class BaseActivityPresenter<V> extends BasePresenter<V> {
// 
//     public BaseActivityPresenter(V view) {
//         super(view);
//     }
// 
//     public void onPostCreate(Bundle savedInstanceState) {
//         // Nothing to do by default
//     }
// 
//     public void onResume() {
//         // Nothing to do by default
//     }
// 
//     @CallSuper
//     public void onSaveInstanceState(Bundle outState) {
//         Icepick.saveInstanceState(this, outState);
//     }
// 
//     @CallSuper
//     public void onRestoreInstanceState(Bundle savedInstanceState) {
//         Icepick.restoreInstanceState(this, savedInstanceState);
//     }
// 
//     public void onNavigationItemSelected(@IdRes int itemId) {
//         // Nothing to do by default
//     }
// 
//     public boolean onBackPressed() {
//         return false;
//     }
// }
// 
// Path: app/src/main/java/com/nilhcem/devfestnantes/utils/Strings.java
// public class Strings {
// 
//     private Strings() {
//         throw new UnsupportedOperationException();
//     }
// 
//     public static String capitalizeFirstLetter(@NonNull String src) {
//         return src.substring(0, 1).toUpperCase(Locale.getDefault()) + src.substring(1);
//     }
// }


// Path: app/src/main/java/com/nilhcem/devfestnantes/ui/sessions/list/SessionsListPresenter.java
import android.content.Context;
import android.os.Bundle;
import com.nilhcem.devfestnantes.R;
import com.nilhcem.devfestnantes.data.app.model.ScheduleSlot;
import com.nilhcem.devfestnantes.data.app.model.Session;
import com.nilhcem.devfestnantes.ui.BaseActivityPresenter;
import com.nilhcem.devfestnantes.utils.Strings;
import org.threeten.bp.LocalDateTime;
import org.threeten.bp.format.DateTimeFormatter;
import org.threeten.bp.format.FormatStyle;
import java.util.List;
import java.util.Locale;

package com.nilhcem.devfestnantes.ui.sessions.list;





public class SessionsListPresenter extends BaseActivityPresenter<SessionsListMvp.View> {

    private final List<Session> sessions;

    public SessionsListPresenter(Context context, SessionsListMvp.View view, ScheduleSlot slot) {
        super(view);
        this.view.initToobar(formatDateTime(context, slot.getTime()));
        sessions = slot.getSessions();
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        this.view.initSessionsList(sessions);
    }

    private String formatDateTime(Context context, LocalDateTime dateTime) {
        String dayPattern = context.getString(R.string.schedule_pager_day_pattern);
        DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern(dayPattern, Locale.getDefault());
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);

        String formatted = context.getString(R.string.schedule_browse_sessions_title_pattern,
                dateTime.format(dayFormatter),
                dateTime.format(timeFormatter));
        return Strings.capitalizeFirstLetter(formatted);