Пример #1
0
        public IActionResult CreateTimeslipTemplate(CustomDay_WBIVM customDay_WBIVM)
        {
            Guid          wbiGuid           = Guid.Parse(customDay_WBIVM.WBI_Id);
            CustomDay_WBI timeslip_template = new CustomDay_WBI()
            {
                NewChangeRequestId = wbiGuid,
                CustomDayId        = customDay_WBIVM.CustomDayId,
                Remarks            = customDay_WBIVM.Remarks
            };

            if (customDay_WBIVM.StartTime != null)
            {
                timeslip_template.StartTime = DateTime.Parse(customDay_WBIVM.StartTime);
            }
            else
            {
                //throw new ArgumentNullException("You need to enter a start time...");
                return(new BadRequestObjectResult(new { message = "You need to enter a start time..." }));
            }

            if (customDay_WBIVM.EndTime != null)
            {
                timeslip_template.EndTime = DateTime.Parse(customDay_WBIVM.EndTime);
            }
            else
            {
                return(new BadRequestObjectResult(new { message = "You need to enter an end time..." }));
            }

            foreach (var item in _context.Timeslip_Templates.Where(i => i.CustomDayId == customDay_WBIVM.CustomDayId))
            {
                if (item.StartTime >= timeslip_template.EndTime || item.EndTime <= timeslip_template.StartTime)
                {
                }
                else
                {
                    return(new BadRequestObjectResult(new { message = "Times cannot overlap" }));
                }
            }
            _context.Timeslip_Templates.Add(timeslip_template);
            _context.SaveChanges();

            return(new OkObjectResult(timeslip_template));
        }
Пример #2
0
        public bool EditTimeslipTemplate(CustomDay_WBIVM customDay_WBIVM)
        {
            var timeslip_template = GetOneTimeslipTemplate(customDay_WBIVM.TimeslipTemplateId);

            if (timeslip_template == null)
            {
                return(false);
            }
            else
            {
                timeslip_template.StartTime = DateTime.Parse(customDay_WBIVM.StartTime);
                timeslip_template.EndTime   = DateTime.Parse(customDay_WBIVM.EndTime);
                timeslip_template.Remarks   = customDay_WBIVM.Remarks;

                _context.SaveChanges();

                return(true);
            }
        }
        public IActionResult Create([FromBody] CustomDay_WBIVM customDay_WBIVM)
        {
            DateTime newStartTime;
            DateTime newEndTime;

            //check for start time null or empty
            if (customDay_WBIVM.StartTime == null || customDay_WBIVM.StartTime == "")
            {
                return(new BadRequestObjectResult(new { message = "Please enter a start time" }));
            }
            //check that start time is a valid datetime
            bool success1 = DateTime.TryParse(customDay_WBIVM.StartTime, out DateTime result1);

            if (success1)
            {
                newStartTime = result1;
            }
            else
            {
                return(new BadRequestObjectResult(new { message = "Please enter a valid start time" }));
            }
            //check for end time null or empty
            if (customDay_WBIVM.EndTime == null || customDay_WBIVM.EndTime == "")
            {
                return(new BadRequestObjectResult(new { message = "Please enter an end time" }));
            }
            //check that end time is a valid datetime
            bool success2 = DateTime.TryParse(customDay_WBIVM.EndTime, out DateTime result2);

            if (success2)
            {
                newEndTime = result2;
            }
            else
            {
                return(new BadRequestObjectResult(new { message = "Please enter a valid end time" }));
            }
            //check that start time is less than (earlier than) end time

            if (newStartTime >= newEndTime)
            {
                return(new BadRequestObjectResult(new { message = "End time must be later than start time" }));
            }
            //check that start time and end time are the same date
            if (newStartTime.Date != newEndTime.Date)
            {
                return(new BadRequestObjectResult(new { message = "Start and end time must be the same date" }));
            }
            //check for overlap with other timeslip templates
            var timeslipTemplates = customDay_WBIRepo.GetAllTimeslipTemplateByCustomDay(customDay_WBIVM.CustomDayId);

            foreach (var item in timeslipTemplates)
            {
                if (item.TimeslipTemplateId != customDay_WBIVM.TimeslipTemplateId)
                {
                    if (item.StartTime.Hour < newEndTime.Hour && item.EndTime.Hour > newStartTime.Hour)
                    {
                        return(new BadRequestObjectResult(new { message = "Times cannot overlap" }));
                    }

                    if (item.StartTime.Hour == newEndTime.Hour)
                    {
                        if (item.StartTime.Minute < newEndTime.Minute)
                        {
                            return(new BadRequestObjectResult(new { message = "Times cannot overlap" }));
                        }
                    }

                    if (item.EndTime.Hour == newStartTime.Hour)
                    {
                        if (item.EndTime.Minute > newStartTime.Minute)
                        {
                            return(new BadRequestObjectResult(new { message = "Times cannot overlap" }));
                        }
                    }
                }
            }

            return(new OkObjectResult(customDay_WBIRepo.CreateTimeslipTemplate(customDay_WBIVM)));
        }