public IActionResult PutDepartmentManager(
            string departmentNumber,
            int employeeNumber,
            [FromBody] DepartmentManagerModel department
            )
        {
            DepartmentManager departmentToUpdate = new DepartmentManager
            {
                EmployeeNumber   = employeeNumber,
                DepartmentNumber = departmentNumber,
                FromDate         = department.FromDate,
                ToDate           = department.ToDate
            };

            _departmentManagerService.UpdateDepartmentManager(departmentToUpdate);

            DepartmentManagerModel updatedDepartment = new DepartmentManagerModel
            {
                EmployeeNumber   = departmentToUpdate.EmployeeNumber,
                DepartmentNumber = departmentToUpdate.DepartmentNumber,
                FromDate         = departmentToUpdate.FromDate,
                ToDate           = departmentToUpdate.ToDate
            };

            return(Ok(updatedDepartment));
        }
        public IActionResult GetAllDepartmentManagersByDepartmentNumber(
            [FromQuery(Name = "page")] int page,
            [FromQuery(Name = "pageSize")] int pageSize,
            [FromQuery(Name = "sort")] string sort,
            [FromQuery(Name = "filter")] string filter,
            [FromQuery(Name = "currentManagers")] bool currentManagers,
            string departmentNumber
            )
        {
            page     = (page <= 0) ? Constants.PageDefaultOffset : page;
            pageSize = (pageSize <= 0) ? Constants.PageDefaultLimit : pageSize;
            sort     = sort ?? Constants.PageDefaultSort;
            filter   = filter ?? Constants.DepartmentManagerDefaultFilter;

            List <DepartmentManagerModel> departmentList = new List <DepartmentManagerModel>();

            _departmentManagerService.GetDepartmentManagerByDepartmentNumber(departmentNumber)
            .Where(e =>
            {
                if (currentManagers)
                {
                    return(e.ToDate.Equals(Constants.DatabaseDefaultDate));
                }
                else
                {
                    return(true);
                }
            })
            .AsQueryable()
            .OrderByDynamic(filter, sort)
            .Skip(page * pageSize)
            .Take(pageSize)
            .ToList()
            .ForEach(d =>
            {
                DepartmentManagerModel department = new DepartmentManagerModel
                {
                    EmployeeNumber   = d.EmployeeNumber,
                    DepartmentNumber = d.DepartmentNumber,
                    FromDate         = d.FromDate,
                    ToDate           = d.ToDate
                };

                departmentList.Add(department);
            });

            if (departmentList.Count <= 0)
            {
                return(NoContent());
            }

            return(Ok(departmentList));
        }
        public IActionResult PostDepartmentManager(
            [FromBody] DepartmentManagerModel departmentManager
            )
        {
            try
            {
                _departmentManagerService.InsertDepartmentManager(
                    new DepartmentManager
                {
                    EmployeeNumber   = departmentManager.EmployeeNumber,
                    DepartmentNumber = departmentManager.DepartmentNumber,
                    FromDate         = departmentManager.FromDate,
                    ToDate           = departmentManager.ToDate
                });

                return(Created($"/api/departments/{departmentManager.DepartmentNumber}/managers/{departmentManager.EmployeeNumber}", departmentManager));
            }
            catch (GenericServiceException genericServiceException)
            {
                if (genericServiceException.GenericExceptionResponse.Equals(GenericExceptionResponse.ConflictException))
                {
                    return(StatusCode(genericServiceException.StatusCode, APIResponse.ApiConflict(genericServiceException.Message)));
                }
                else if (genericServiceException.GenericExceptionResponse.Equals(GenericExceptionResponse.BadConstraintsException))
                {
                    return(StatusCode(genericServiceException.StatusCode, APIResponse.BadRequest()));
                }
                else if (genericServiceException.GenericExceptionResponse.Equals(GenericExceptionResponse.InternalErrorException))
                {
                    return(StatusCode(500, APIResponse.DefaultErrorMessage(genericServiceException.Message, 500)));
                }

                return(StatusCode(500, APIResponse.DefaultErrorMessage(genericServiceException.Message, 500)));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, APIResponse.DefaultErrorMessage(ex.Message, 500)));
            }
        }