Exemple #1
0
 private WorkingHours ConvertWorkingHoursFromPayload(long roomId, WorkingHoursPayload payload)
 {
     return(new WorkingHours
     {
         RoomId = roomId,
         Day = payload.Day,
         TimeStart = payload.TimeStart,
         TimeEnd = payload.TimeEnd,
         PriceForHour = payload.PriceForHour
     });
 }
Exemple #2
0
        public GenericStatusMessage ValidateWorkingHoursData(WorkingHoursPayload payload, bool required = true)
        {
            ValidationHelper            helper      = new ValidationHelper();
            List <GenericStatusMessage> validations = new List <GenericStatusMessage>
            {
                helper.ValidateBetweenValues(payload.TimeStart, "Start time", 0, 1439, required),
                helper.ValidateBetweenValues(payload.TimeEnd, "End time", 0, 1439, required),
                new GenericStatusMessage(payload.TimeStart < payload.TimeEnd, "End time can't be sooner than the start.")
            };

            return(validations.FirstOrDefault(x => !x.Success) ?? new GenericStatusMessage(true));
        }
Exemple #3
0
        public GenericStatusMessage ValidateWorkingHoursData(List <WorkingHoursPayload> list, bool required = true)
        {
            for (int i = 0; i < list.Count; i++)
            {
                WorkingHoursPayload  current = list[i];
                GenericStatusMessage status  = ValidateWorkingHoursData(current, required);
                if (!status.Success)
                {
                    status.Message = $"Working hours [{i}]: {status.Message}";
                    return(status);
                }
            }

            List <GenericStatusMessage> overlapsValidations = list.GroupBy(x => x.Day).Select(x => CheckOverlapsForDay(x)).ToList();

            return(overlapsValidations.FirstOrDefault(x => !x.Success) ?? new GenericStatusMessage(true));
        }
Exemple #4
0
        private GenericStatusMessage CheckOverlapsForDay(IEnumerable <WorkingHoursPayload> timeSlotsForDay)
        {
            List <WorkingHoursPayload> listForDay = timeSlotsForDay.OrderBy(x => x.TimeStart).ToList();

            if (listForDay.Count <= 1)
            {
                return(new GenericStatusMessage(true));
            }

            for (int i = 0; i < listForDay.Count - 1; i++)
            {
                WorkingHoursPayload current = listForDay[i];
                WorkingHoursPayload next    = listForDay[i + 1];
                if (next.TimeStart <= current.TimeEnd)
                {
                    return(new GenericStatusMessage(false, $"Found overlapping in day {current.Day}: [{current.TimeStart.ToTime()}]-[{current.TimeEnd.ToTime()}] and [{next.TimeStart.ToTime()}]-[{next.TimeEnd.ToTime()}]"));
                }
            }

            return(new GenericStatusMessage(true));
        }