Exemplo n.º 1
0
        public async Task <ResponseDto <BaseModelDto> > EditEvent(string calendarId, string eventId, EditEventBindingModel model)
        {
            var response = new ResponseDto <BaseModelDto>();

            if (model.StartDate >= model.EndDate)
            {
                response.Errors.Add(ServiceErrors.START_DATE_GREATER_ERROR);
                return(response);
            }

            var service = await _googleCalendarService.GetCalendarService();

            if (service == null)
            {
                response.Errors.Add(ServiceErrors.SERVICE_ERROR);
                return(response);
            }

            var events = await GetListOfEvents(calendarId);

            if (events.ErrorOccurred)
            {
                response.Errors.Add(ServiceErrors.STH_WENT_WRONG_ERROR);
                return(response);
            }

            var exists = events.Object.EventsList.Exists(ev => ev.Id == eventId);

            if (!exists)
            {
                response.Errors.Add(ServiceErrors.EVENT_DOES_NOT_EXIST_ERROR);
                return(response);
            }

            var dbCalendar = await _calendarRepository.GetById(calendarId);

            if (dbCalendar == null)
            {
                response.Errors.Add(ServiceErrors.CALENDAR_DOES_NOT_EXIST_ERROR);
                return(response);
            }

            var valideDate = ValidDateTimeForEdit(model.StartDate, model.EndDate, dbCalendar, eventId);

            if (!valideDate)
            {
                response.Errors.Add(ServiceErrors.EVENT_WHILE_OTHERS_ERROR);
                return(response);
            }

            var dbEvent = await _eventRepository.GetById(eventId);

            if (dbEvent == null)
            {
                response.Errors.Add(ServiceErrors.EVENT_DOES_NOT_EXIST_ERROR);
                return(response);
            }

            dbEvent.Summary   = model.Summary;
            dbEvent.StartDate = model.StartDate;
            dbEvent.EndDate   = model.EndDate;

            await _eventRepository.Edit(dbEvent);

            var oldEvent = await service.Events.Get(calendarId, eventId).ExecuteAsync();

            oldEvent.Summary        = model.Summary;
            oldEvent.Start.DateTime = model.StartDate;
            oldEvent.End.DateTime   = model.EndDate;

            await service.Events.Update(oldEvent, calendarId, eventId).ExecuteAsync();

            return(response);
        }
        public async Task <IActionResult> EditEvent(string calendarId, string eventId, [FromBody] EditEventBindingModel model)
        {
            var response = await _eventService.EditEvent(calendarId, eventId, model);

            if (response.ErrorOccurred)
            {
                return(BadRequest(response));
            }

            return(Ok(response));
        }