public ApprovalAttendanceSchedule GetByApprovalScheduleType(ApprovalScheduleType type)
        {
            ApprovalAttendanceSchedule approvalAttendanceScheduleAlias = null;
            ApprovalAttendanceSchedule item = NHSession.QueryOver(() => approvalAttendanceScheduleAlias)
                                              .Where(() => approvalAttendanceScheduleAlias.ApprovalType == type)
                                              .List <ApprovalAttendanceSchedule>().SingleOrDefault();

            return(item);
        }
        public ApprovalAttendanceSchedule GetByApprovalScheduleTypeAndCostCenter(ApprovalScheduleType type, decimal personID)
        {
            Person person = personBusiness.GetByID(personID);

            if (person.CostCenter != null)
            {
                ApprovalAttendanceSchedule approvalAttendanceScheduleAlias = null;
                ApprovalAttendanceSchedule item = NHSession.QueryOver(() => approvalAttendanceScheduleAlias)
                                                  .Where(() =>
                                                         approvalAttendanceScheduleAlias.ApprovalType == type &&
                                                         approvalAttendanceScheduleAlias.CostCenter.ID == person.CostCenter.ID)
                                                  .List <ApprovalAttendanceSchedule>().SingleOrDefault();
                return(item);
            }
            else
            {
                return(null);
            }
        }
        public HttpResponseMessage Edit(decimal id, OverTimeProxy viewModel)
        {
            try
            {
                decimal ManagerPersonId;
                if (viewModel.ManagerPersonId == 0)
                {
                    ManagerPersonId = BUser.CurrentUser.Person.ID;
                }
                else
                {
                    ManagerPersonId = viewModel.ManagerPersonId;
                }
                //------------------------------------------------------------------------
                Person person = PersonBusiness.GetByID(ManagerPersonId);
                //تشخیص اینکه طرف معاون هست یا خیر - جهت اعمال محدودیت زمان بندی تایید به تفکیک مدیران و معاونین
                ApprovalScheduleType approvalType = ApprovalScheduleType.Manager;

                var  personParamAssistance = person.PersonTASpec.GetParamValue(person.ID, "IsAssistance", DateTime.Now);
                bool stateAssistance       = personParamAssistance != null?Utility.ToInteger(personParamAssistance.Value) > 0 : false;

                if (stateAssistance)
                {
                    approvalType = ApprovalScheduleType.Assistance;
                }

                OverTimePersonDetailBusiness.UpdateOverTimePersonDetail(id, viewModel, approvalType, ManagerPersonId);
                return(Request.CreateResponse(HttpStatusCode.OK, viewModel));
            }
            catch (UIValidationExceptions ex)
            {
                this.exceptionHandler.ApiHandleException("OverTimePersonController", ex);
                return(Request.CreateResponse(HttpStatusCode.NotFound, ex.ExceptionList.Count > 0 ? ex.ExceptionList[0].Message : ex.Message));
            }
            catch (Exception ex)
            {
                this.exceptionHandler.ApiHandleException("OverTimePersonController", ex);
                return(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }
        }