コード例 #1
0
        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 {
                });
            }
        }