package com.todoist.model;

public class BaseReminder extends TodoistObjectWithId {
    public static final String TYPE_ABSOLUTE = "absolute";
    public static final String TYPE_RELATIVE = "relative";
    public static final String TYPE_LOCATION = "location";

    public static final String SERVICE_EMAIL = "email";
    public static final String SERVICE_PUSH = "push";
    public static final String SERVICE_MOBILE = "mobile";
    public static final String SERVICE_NO_DEFAULT = "no_default";
    public static final String SERVICE_OTHER = "other";

    public static final String LOC_TRIGGER_ON_ENTER = "on_enter";
    public static final String LOC_TRIGGER_ON_LEAVE = "on_leave";

    private String type;
    /** Exclusive to reminders of type {@link #TYPE_ABSOLUTE}. */
    private String dateString;
    /** Exclusive to reminders of type {@link #TYPE_ABSOLUTE}. */
    private String dueDate;
    /** Exclusive to reminders of type {@link #TYPE_RELATIVE}. */
    private Integer minuteOffset;
    /** Exclusive to reminders of type {@link #TYPE_LOCATION}. */
    private String name;
    /** Exclusive to reminders of type {@link #TYPE_LOCATION}. */
    private Double locLat;
    /** Exclusive to reminders of type {@link #TYPE_LOCATION}. */
    private Double locLong;
    /** Exclusive to reminders of type {@link #TYPE_LOCATION}. */
    private Integer radius;
    /** Exclusive to reminders of type {@link #TYPE_LOCATION}. */
    private String locTrigger;
    private Long notifyUid;
    private long itemId;

    public BaseReminder(long id, String type, String dateString,
                        String dueDate, Integer minuteOffset, String name, Double locLat, Double locLong,
                        Integer radius, String locTrigger, Long notifyUid, long itemId, boolean deleted) {
        super(id, deleted);
        this.type = type;
        this.dateString = dateString;
        this.dueDate = dueDate;
        this.minuteOffset = minuteOffset;
        this.name = name;
        this.locLat = locLat;
        this.locLong = locLong;
        this.radius = radius;
        this.locTrigger = locTrigger;
        this.notifyUid = notifyUid;
        this.itemId = itemId;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getDateString() {
        return dateString;
    }

    public void setDateString(String dateString) {
        this.dateString = dateString;
    }

    public String getDueDate() {
        return dueDate;
    }

    public void setDueDate(String dueDate) {
        this.dueDate = dueDate;
    }

    public Integer getMinuteOffset() {
        return minuteOffset;
    }

    public void setMinuteOffset(Integer minuteOffset) {
        this.minuteOffset = minuteOffset;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getLocLat() {
        return locLat;
    }

    public void setLocLat(Double locLat) {
        this.locLat = locLat;
    }

    public Double getLocLong() {
        return locLong;
    }

    public void setLocLong(Double locLong) {
        this.locLong = locLong;
    }

    public Integer getRadius() {
        return radius;
    }

    public void setRadius(Integer radius) {
        this.radius = radius;
    }

    public String getLocTrigger() {
        return locTrigger;
    }

    public void setLocTrigger(String locTrigger) {
        this.locTrigger = locTrigger;
    }

    public Long getNotifyUid() {
        return notifyUid;
    }

    public void setNotifyUid(Long notifyUid) {
        this.notifyUid = notifyUid;
    }

    public long getItemId() {
        return itemId;
    }
}

@@ -875,28 +875,26 @@
     private 
-Stri
+Lo
 ng dueDate;%0A
@@ -1458,24 +1458,52 @@
 locTrigger;%0A
+    private String service;%0A
     private 
@@ -1589,16 +1589,40 @@
 ng type,
+%0A                       
  String 
@@ -1632,19 +1632,31 @@
 eString,
-%0A  
+ Long dueDate,%0A
         
@@ -1673,23 +1673,9 @@
     
-String dueDate,
+ 
  Int
@@ -1692,16 +1692,40 @@
 eOffset,
+%0A                       
  String 
@@ -1764,32 +1764,8 @@
 ong,
-%0A                       
  Int
@@ -1794,16 +1794,56 @@
 cTrigger
+,%0A                        String service
 , Long n
@@ -2202,24 +2202,56 @@
 locTrigger;%0A
+        this.service = service;%0A
         this
@@ -2326,46 +2326,778 @@
 lic 
-String getType() %7B%0A        return type
+BaseReminder(long id, String type,%0A                        String dateString, Long dueDate,%0A                        Integer minuteOffset,%0A                        String name, Double locLat, Double locLong, Integer radius, String locTrigger,%0A                        String service, Long notifyUid, long itemId) %7B%0A        this(id, type, dateString, dueDate, minuteOffset, name, locLat, locLong, radius, locTrigger, service, notifyUid,%0A             itemId, false);%0A    %7D%0A%0A    public String getType() %7B%0A        return type;%0A    %7D%0A%0A    public boolean isAbsolute() %7B%0A        return TYPE_ABSOLUTE.equals(type);%0A    %7D%0A%0A    public boolean isRelative() %7B%0A        return TYPE_RELATIVE.equals(type);%0A    %7D%0A%0A    public boolean isLocation() %7B%0A        return TYPE_LOCATION.equals(type)
 ;%0A  
@@ -3346,28 +3346,26 @@
 %0A    public 
-Stri
+Lo
 ng getDueDat
@@ -3428,20 +3428,18 @@
 DueDate(
-Stri
+Lo
 ng dueDa
@@ -4385,32 +4385,180 @@
 Trigger;%0A    %7D%0A%0A
+    public String getService() %7B%0A        return service;%0A    %7D%0A%0A    public void setService(String service) %7B%0A        this.service = service;%0A    %7D%0A%0A
     public Long 
@@ -4755,11 +4755,89 @@
 d;%0A    %7D
+%0A%0A    public void setItemId(long itemId) %7B%0A        this.itemId = itemId;%0A    %7D
 %0A%7D%0A

Fix dueDate type, add service in BaseReminder