public CustomResult Update(UpdatePersonnelDismissalEntranceDto dto)
        {
            var personnelDismissalEntrance = _personnelDismissalEntranceRepository.GetById(dto.Id);

            if (personnelDismissalEntrance != null)
            {
                var endDate = dto.EndDate;

                if (personnelDismissalEntrance.Start != dto.Start ||
                    personnelDismissalEntrance.EndDate != endDate ||
                    personnelDismissalEntrance.End != dto.End)
                {
                    if (endDate.HasValue &&
                        endDate < personnelDismissalEntrance.StartDate.Date)
                    {
                        return(new CustomResult
                        {
                            Message = "end date cannot be less that start date" +
                                      $"{personnelDismissalEntrance.StartDate.ToShortDateString()}"
                        });
                    }

                    personnelDismissalEntrance.Start       = dto.Start;
                    personnelDismissalEntrance.EndDate     = endDate;
                    personnelDismissalEntrance.End         = dto.End;
                    personnelDismissalEntrance.IsCompleted = dto.End.HasValue;

                    _personnelDismissalEntranceRepository.Update(personnelDismissalEntrance);
                }
            }
            else
            {
                try
                {
                    throw new LogicalException();
                }
                catch (LogicalException ex)
                {
                    _logger.LogLogicalError
                        (ex, "PersonnelDismissalEntrance entity with the id: '{0}', is not available." +
                        " update operation failed.", dto.Id);
                    throw;
                }
            }

            return(new CustomResult
            {
                IsValid = true
            });
        }
        public IHttpActionResult Update([FromBody] UpdatePersonnelDismissalEntranceDto personnelEntrance)
        {
            if (personnelEntrance == null)
            {
                return(BadRequest());
            }
            //custom validations
            var validator = new UpdatePersonnelDismissalEntranceDtoValidator();
            var results   = validator.Validate(personnelEntrance);

            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 = _personnelDismissalEntranceService.Update(personnelEntrance);
                if (!result.IsValid)
                {
                    return(BadRequest(result.Message));
                }
            }
            catch (LogicalException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch
            {
                return(BadRequest(AppSettings.INTERNAL_SERVER_ERROR_MESSAGE));
            }
            return(Ok());
        }