tsk-29: Place restrictions on adding scheduled message event (#30)
Closes #29 Reviewed-on: phoenix/textsender-api#30 Co-authored-by: phoenix <kundeng00@pm.me> Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
@@ -29,10 +29,11 @@ type GetScheduledMessageEventResponse struct {
|
||||
|
||||
type ScheduledMessageEventHandler struct {
|
||||
ScheduledMessageEventStore store.ScheduledMessageEventStore
|
||||
ScheduledMessageStore store.ScheduledMessageStore
|
||||
}
|
||||
|
||||
func NewScheduledMessageEventHandler(str store.ScheduledMessageEventStore) *ScheduledMessageEventHandler {
|
||||
return &ScheduledMessageEventHandler{ScheduledMessageEventStore: str}
|
||||
func NewScheduledMessageEventHandler(str store.ScheduledMessageEventStore, schStore store.ScheduledMessageStore) *ScheduledMessageEventHandler {
|
||||
return &ScheduledMessageEventHandler{ScheduledMessageEventStore: str, ScheduledMessageStore: schStore}
|
||||
}
|
||||
|
||||
func (s *ScheduledMessageEventHandler) AddScheduledMessageEvent(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -64,23 +65,33 @@ func (s *ScheduledMessageEventHandler) AddScheduledMessageEvent(w http.ResponseW
|
||||
} else {
|
||||
ctx := r.Context()
|
||||
|
||||
if exists, err := s.ScheduledMessageEventStore.Exists(ctx, &event); err == nil {
|
||||
if exists {
|
||||
statusCode = http.StatusBadRequest
|
||||
resp.Message = "Event already present"
|
||||
} else {
|
||||
if err = s.ScheduledMessageEventStore.CreateScheduledMessageEvent(ctx, &event); err == nil {
|
||||
statusCode = http.StatusCreated
|
||||
resp.Message = "Successful"
|
||||
resp.Data = append(resp.Data, event)
|
||||
if schMsg, err := s.ScheduledMessageStore.Get(ctx, event.ScheduledMessageId); err != nil {
|
||||
statusCode = http.StatusInternalServerError
|
||||
resp.Message = err.Error()
|
||||
} else {
|
||||
if schMsg.Status == scheduling.Pending {
|
||||
if exists, err := s.ScheduledMessageEventStore.Exists(ctx, &event); err == nil {
|
||||
if exists {
|
||||
statusCode = http.StatusBadRequest
|
||||
resp.Message = "Event already present"
|
||||
} else {
|
||||
if err = s.ScheduledMessageEventStore.CreateScheduledMessageEvent(ctx, &event); err == nil {
|
||||
statusCode = http.StatusCreated
|
||||
resp.Message = "Successful"
|
||||
resp.Data = append(resp.Data, event)
|
||||
} else {
|
||||
statusCode = http.StatusInternalServerError
|
||||
resp.Message = err.Error()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
statusCode = http.StatusInternalServerError
|
||||
resp.Message = err.Error()
|
||||
}
|
||||
} else {
|
||||
statusCode = http.StatusBadRequest
|
||||
resp.Message = "Scheduled message cannot be modified due to the status"
|
||||
}
|
||||
} else {
|
||||
statusCode = http.StatusInternalServerError
|
||||
resp.Message = err.Error()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user