protected override async Task <ICommandResult> Handle(PlaceCalendarCommand command) { try { var StartDateTime = DateTime.UtcNow; var EndDateTime = DateTime.UtcNow.AddYears(2); List <EventDetail> createdEventDetailList = new List <EventDetail>(); if (command.PlaceType == FIL.Contracts.Enums.EventType.Regular) { StartDateTime = command.PlaceStartDate; EndDateTime = command.PlaceEndDate; } var place = _eventRepository.GetByAltId(command.PlaceAltId); var placeDetail = _eventDetailRepository.GetSubEventByEventId(place.Id).ToList(); var currentPlaceDetail = _eventDetailRepository.GetByEvent(place.Id).ToList(); if (!currentPlaceDetail.Any()) { try { foreach (FIL.Contracts.DataModels.EventDetail currentEventDetail in currentPlaceDetail) { currentEventDetail.IsEnabled = false; currentEventDetail.EventId = 2384; _eventDetailRepository.Save(currentEventDetail); } } catch (Exception e) { } EventDetail eventDetail = new EventDetail(); eventDetail.AltId = Guid.NewGuid(); eventDetail.EventId = place.Id; eventDetail.Description = ""; eventDetail.IsEnabled = true; eventDetail.Name = place.Name; eventDetail.VenueId = 9893; eventDetail.IsEnabled = true; eventDetail.CreatedBy = command.ModifiedBy; eventDetail.CreatedUtc = DateTime.Now; eventDetail.UpdatedBy = command.ModifiedBy; eventDetail.ModifiedBy = command.ModifiedBy; eventDetail.UpdatedUtc = DateTime.Now; eventDetail.StartDateTime = StartDateTime; eventDetail.EndDateTime = EndDateTime; eventDetail.GroupId = 1; _eventDetailRepository.Save(eventDetail); } var index = -1; int venueId = 1; //DateTime From = new DateTime(StartDateTime.Year, StartDateTime.Month, StartDateTime.Day, StartDateTime.Hour, StartDateTime.Minute, 0).ToUniversalTime(); var From = StartDateTime; var To = EndDateTime; //DateTime To = new DateTime(EndDateTime.Year, EndDateTime.Month, EndDateTime.Day, EndDateTime.Hour, EndDateTime.Minute, 0).ToUniversalTime(); if (!command.IsEdit) // if new creation { place.EventTypeId = command.PlaceType; _eventRepository.Save(place); index = index + 1; Guid guid = Guid.NewGuid(); venueId = placeDetail.ElementAt(0).VenueId; placeDetail.ElementAt(0).Name = place.Name; placeDetail.ElementAt(0).AltId = guid; placeDetail.ElementAt(0).StartDateTime = From; placeDetail.ElementAt(0).EndDateTime = To; placeDetail.ElementAt(0).UpdatedUtc = DateTime.UtcNow; _eventDetailRepository.Save(placeDetail.ElementAt(0)); deleteCalendar(place); addCalendar(command, place); var eventDetail = _eventDetailRepository.GetByAltId(guid); createdEventDetailList.Add(eventDetail); CreateNewHolidyCalendar(command.HolidayDates, eventDetail.Id, place.Id); var weeklyOffDaysCount = command.WeekOffDays.Where(s => s).Count(); CreatePlaceWeekOffs(weeklyOffDaysCount, eventDetail.Id, command.WeekOffDays, place.Id); } else // if edit { if (place.EventTypeId != command.PlaceType) { place.EventTypeId = command.PlaceType; _eventRepository.Save(place); } index = 0; var eventDetails = _eventDetailRepository.GetAllByEventId(place.Id).ToList(); Guid guid = Guid.NewGuid(); var eventDetail = _eventDetailRepository.GetAllByEventId(place.Id).ElementAt(index); eventDetail.Name = place.Name; eventDetail.StartDateTime = From; eventDetail.EndDateTime = To; eventDetail.IsEnabled = true; _eventDetailRepository.Save(eventDetail); deleteCalendar(place); addCalendar(command, place); var weeklyOffDaysCount = command.WeekOffDays.Where(s => s).Count(); UpdatePlaceWeekOff(weeklyOffDaysCount, eventDetail.Id, command.WeekOffDays, place.Id); if (command.HolidayDates.Count() > 0) { UpdatePlaceHoliday(command.HolidayDates, eventDetail.Id, place.Id); } updateEventStatus(place.Id, false); } return(new PlaceCalendarCommandResult { Success = true, }); } catch (Exception e) { return(new PlaceCalendarCommandResult { }); } }