// Delete deletes a single reminder
func (gs *ReminderService) Delete(
	r *http.Request, req *ReminderIdReq, _ *endpoints.VoidMessage) error {

	c := endpoints.NewContext(r)
	key, err := datastore.DecodeKey(req.Id)
	if err != nil {
		return err
	}
	return datastore.Delete(c, key)
}
// List responds with a list of all reminders ordered by Date field.
// Most recent reminders come first.
func (gs *ReminderService) List(
	r *http.Request, req *ReminderUserQuery, resp *RemindersList) error {

	c := endpoints.NewContext(r)

	username := req.UserName

	q := datastore.NewQuery("Reminder").Filter("User =", username)
	reminder := make([]*Reminder, 0, 10)
	keys, err := q.GetAll(c, &reminder)
	if err != nil {
		return err
	}
	for i, k := range keys {
		reminder[i].Id = k.Encode()
	}
	resp.Items = reminder
	return nil
}
// createReminder creates a new Reminder based on provided NewReminder.
// It stores newly created Reminder with Content being that of NewReminder.Reminder.
// User field will have current username
func (gs *ReminderService) CreateReminder(
	r *http.Request, req *NewReminder, reminder *Reminder) error {

	c := endpoints.NewContext(r)

	reminder.Reminder = make([]string, 1)
	reminder.Reminder = append(req.List)
	reminder.Location = make([]float64, 0)
	reminder.Location = append(reminder.Location, req.Lat, req.Lng)
	reminder.Date = time.Now()
	reminder.User = req.UserName
	reminder.Title = req.Title
	reminder.Urgency = req.Urgency

	key, err := datastore.Put(
		c, datastore.NewIncompleteKey(c, "Reminder", nil), reminder)
	if err != nil {
		return err
	}

	reminder.Id = key.Encode()
	return nil
}