Beispiel #1
0
        public async Task <HttpResponseMessage> Create(HttpRequestMessage request, Holiday holiday)
        {
            return(await CreateHttpResponse(request, () =>
            {
                if (!ModelState.IsValid)
                {
                    return request.CreateResponse(HttpStatusCode.BadRequest, ModelState);
                }

                if (holiday.Date < DateTime.Now || (holiday.Workingday != null && holiday.Workingday.Value < DateTime.Now))
                {
                    return request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.ERROR_HOLIDAY_CREATE_INTHE_PAST);
                }

                var listTimeDay = _timedayService.GetAllTimeDay().ToList();
                if (listTimeDay.FirstOrDefault(x => x.Workingday.Equals(holiday.Date.DayOfWeek.ToString())) == null)
                {
                    return request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.ERROR_HOLIDAY_CREATE_CONTAIN_HOLIDAY);
                }

                if (listTimeDay.FirstOrDefault(x => holiday.Workingday != null && x.Workingday.Equals(holiday.Workingday.Value.DayOfWeek.ToString())) != null)
                {
                    return request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.ERROR_HOLIDAY_CREATE_IN_TIMEDAY);
                }

                var listHoliday = _holidayService.Get(null, true);
                holiday.Workingday = holiday.Workingday.HasValue ? holiday.Workingday.Value.Date : (DateTime?)null;
                if (listHoliday.FirstOrDefault(x => x.Date == holiday.Date.Date || x.Date == holiday.Workingday ||
                                               x.Workingday.HasValue && x.Workingday == holiday.Date.Date ||
                                               x.Workingday.HasValue && x.Workingday == holiday.Workingday) != null)
                {
                    return request.CreateResponse(HttpStatusCode.BadRequest,
                                                  MessageSystem.ERROR_HOLIDAY_CREATE_EXISTED);
                }
                holiday.Date = holiday.Date.Date;
                holiday.Note = !string.IsNullOrEmpty(holiday.Note) ? holiday.Note.Trim() : null;
                holiday.Status = true;
                holiday.CreatedDate = DateTime.Now;
                holiday.CreatedBy = User.Identity.Name;
                _holidayService.Create(holiday);
                // Entitle Day
                _requestService.HandleAddHoliday(holiday);
                _holidayService.Save();
                return request.CreateResponse(HttpStatusCode.OK, holiday);
            }));
        }