Ejemplo n.º 1
0
        public CustomResult Update(UpdateWorkingHourDto dto)
        {
            var workingHour = _workingHourRepository.GetById(dto.Id);

            if (workingHour != null)
            {
                var result = CheckFilters(dto.FromTime, dto.ToTime, dto.MealTimeBreakFromTime
                                          , dto.MealTimeBreakToTime, dto.Break1FromTime, dto.Break1ToTime
                                          , dto.Break2FromTime, dto.Break2ToTime, dto.Break3FromTime, dto.Break3ToTime
                                          , dto.WorkingHourDuration);
                if (!result.IsValid)
                {
                    return(result);
                }

                workingHour.ShiftId               = dto.ShiftId;
                workingHour.Title                 = dto.Title;
                workingHour.FromTime              = dto.FromTime;
                workingHour.ToTime                = dto.ToTime;
                workingHour.WorkingHourDuration   = dto.WorkingHourDuration;
                workingHour.DailyDelay            = dto.DailyDelay.GetSecondsFromDuration();
                workingHour.MonthlyDelay          = dto.MonthlyDelay.GetSecondsFromDuration();
                workingHour.DailyRush             = dto.DailyRush.GetSecondsFromDuration();
                workingHour.MonthlyRush           = dto.MonthlyRush.GetSecondsFromDuration();
                workingHour.PriorExtraWorkTime    = dto.PriorExtraWorkTime.GetSecondsFromDuration();
                workingHour.LaterExtraWorkTime    = dto.LaterExtraWorkTime.GetSecondsFromDuration();
                workingHour.FloatingTime          = dto.FloatingTime.GetSecondsFromDuration();
                workingHour.MealTimeBreakFromTime = dto.MealTimeBreakFromTime;
                workingHour.MealTimeBreakToTime   = dto.MealTimeBreakToTime;
                workingHour.Break1FromTime        = dto.Break1FromTime;
                workingHour.Break1ToTime          = dto.Break1ToTime;
                workingHour.Break2FromTime        = dto.Break2FromTime;
                workingHour.Break2ToTime          = dto.Break2ToTime;
                workingHour.Break3FromTime        = dto.Break3FromTime;
                workingHour.Break3ToTime          = dto.Break3ToTime;

                _workingHourRepository.Update(workingHour);

                return(new CustomResult
                {
                    IsValid = true
                });
            }
            else
            {
                try
                {
                    throw new LogicalException();
                }
                catch (LogicalException ex)
                {
                    _logger.LogLogicalError
                        (ex, "WorkingHour entity with the id: '{0}', is not available." +
                        " update operation failed.", dto.Id);
                    throw;
                }
            }
        }
        public IHttpActionResult Update([FromBody] UpdateWorkingHourDto workingHour)
        {
            if (workingHour == null)
            {
                return(BadRequest());
            }
            //custom validations
            var validator = new UpdateWorkingHourDtoValidator();
            var results   = validator.Validate(workingHour);

            if (!results.IsValid)
            {
                foreach (var failure in results.Errors)
                {
                    ModelState.AddModelError(failure.PropertyName, failure.ErrorMessage);
                }
            }
            if (!ModelState.IsValid)
            {
                string errorMessage = new ModelStateError(_logger).OutputMessage(ModelState);
                return(BadRequest(errorMessage));
            }
            try
            {
                var result = _workingHourService.Update(workingHour);
                if (!result.IsValid)
                {
                    return(BadRequest(result.Message));
                }
                return(Ok());
            }
            catch (LogicalException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch
            {
                return(BadRequest(AppSettings.INTERNAL_SERVER_ERROR_MESSAGE));
            }
        }