public async Task <Response> CreateScheduleFromSchedule(CreateScheduleFromActiveSchedule schedule)
        {
            var endpoint = baseurl + "schedule";
            var response = await PostAsync <CreateScheduleFromActiveSchedule>(endpoint, schedule);


            if (response.IsSuccessStatusCode)
            {
                return(new Response(true));
            }
            return(new Response(false));
        }
Example #2
0
        public async Task <IActionResult> OnPostUpdate(List <NewIntervalViewModel> NewIntervals,
                                                       List <IntervalViewModel> intervals, List <string> day, string nameOfPlan, Shift shift,
                                                       DateTime NewScheduleDate, Guid CurrentScheduleId, Guid CreatedBy)
        {
            var currentSchedule = await _scheduleDataService.GetScheduleById(CurrentScheduleId);



            List <BookingViewModel> NotToBeDeleted = new List <BookingViewModel>();
            var createCommand = new CreateScheduleFromActiveSchedule();

            createCommand.Name                  = nameOfPlan;
            createCommand.Shifts                = shift;
            createCommand.IsStandard            = false;
            createCommand.ScheduleDay           = NewScheduleDate;
            createCommand.MischellaneousPallets = 0;
            createCommand.CreatedBy             = CreatedBy;

            var scheduleId = currentSchedule.ScheduleId;

            createCommand.ScheduleId = scheduleId;

            createCommand.ActiveDays = SetDayViewModel(day);

            var intervall = new List <IntervalViewModel>();

            foreach (var interval in intervals)
            {
                if (interval.EndTime.Value.TimeOfDay != TimeSpan.Zero ||
                    interval.StartTime.Value.TimeOfDay != TimeSpan.Zero)
                {
                    var sameInterval = currentSchedule.Intervals.FirstOrDefault(e =>
                                                                                e.EndTime.Value.TimeOfDay.CompareTo(interval.EndTime.Value.TimeOfDay) == 0 &&
                                                                                e.StartTime.Value.TimeOfDay.CompareTo(interval.StartTime.Value.TimeOfDay) == 0);

                    if (sameInterval != null)
                    {
                        intervall.Add(sameInterval);
                        NotToBeDeleted.AddRange(sameInterval.Bookings);
                    }
                    else
                    {
                        intervall.Add(new IntervalViewModel
                        {
                            Bookings         = new List <BookingViewModel>(),
                            BottomPallets    = interval.BottomPallets,
                            EndTime          = CreateDate(NewScheduleDate, interval.EndTime.Value.TimeOfDay),
                            StartTime        = CreateDate(NewScheduleDate, interval.StartTime.Value.TimeOfDay),
                            IntervalId       = Guid.NewGuid(),
                            IsBooked         = false,
                            RemainingPallets = interval.BottomPallets,
                            ScheduleId       = scheduleId
                        });
                    }
                }
            }

            foreach (var newInterval in NewIntervals)
            {
                if (newInterval.End != TimeSpan.Zero ||
                    newInterval.Start != TimeSpan.Zero)
                {
                    var sameInterval = currentSchedule.Intervals.FirstOrDefault(e =>
                                                                                e.EndTime.Value.TimeOfDay.CompareTo(newInterval.End) == 0 &&
                                                                                e.StartTime.Value.TimeOfDay.CompareTo(newInterval.Start) == 0);

                    if (sameInterval != null)
                    {
                        intervall.Add(sameInterval);
                        NotToBeDeleted.AddRange(sameInterval.Bookings);
                    }
                    else
                    {
                        intervall.Add(new IntervalViewModel
                        {
                            Bookings         = new List <BookingViewModel>(),
                            BottomPallets    = newInterval.Pallets,
                            EndTime          = CreateDate(NewScheduleDate, newInterval.End),
                            StartTime        = CreateDate(NewScheduleDate, newInterval.End),
                            IntervalId       = Guid.NewGuid(),
                            IsBooked         = false,
                            RemainingPallets = newInterval.Pallets,
                            ScheduleId       = scheduleId
                        });
                    }
                }
            }



            List <BookingViewModel> bookingToBeDeleted = new List <BookingViewModel>();

            foreach (var interval in currentSchedule.Intervals)
            {
                foreach (var booking in interval.Bookings)
                {
                    var notDeleted = NotToBeDeleted.FirstOrDefault(e => e.InternalId == booking.InternalId);
                    if (notDeleted == null)
                    {
                        bookingToBeDeleted.Add(booking);
                    }
                }
            }

            foreach (var booking in bookingToBeDeleted)
            {
                var bookingResult = await _bookingDataService.DeleteBooking(booking.InternalId);

                Console.WriteLine(bookingResult);
            }

            List <IntervalViewModel> sorted = intervall.OrderBy(e => e.StartTime).ToList();

            createCommand.IntervalViewModels = sorted;
            var result = await _scheduleDataService.CreateScheduleFromSchedule(createCommand);

            if (result.IsSuccesfull)
            {
                return(new RedirectToPageResult("CalendarOverview"));
            }

            return(new RedirectToPageResult("CalendarOverview"));
        }