Beispiel #1
0
        public void ApproveWorkHour(WorkHour wh)
        {
            var stagecontroller = new StageController(_UOW);

            stagecontroller.SetNextStageID(wh);
            _UOW.SaveChanges();
        }
Beispiel #2
0
        public List <string> ValidateRegisterWorkHour(WorkHour workHour)
        {
            List <string> result = new List <string>();

            if (workHour == null)
            {
                result.Add("کارکرد خالی میباشد");
            }
            if (workHour.Hours <= 0)
            {
                result.Add("ساعت کارکرد خالی میباشد");
            }
            if (workHour.Date == null)
            {
                result.Add("تاریخ کارکرد خالی میباشد");
            }
            if (workHour.EmployeeID == null)
            {
                result.Add("کاربر خالی میباشد");
            }
            if (workHour.WorkflowStageID == null)
            {
                result.Add("مرحله کارکرد خالی میباشد");
            }
            if (workHour.TaskID == null)
            {
                result.Add("وظیفه کارکرد خالی میباشد");
            }
            if (workHour.ProjectId == null)
            {
                result.Add("پروژه کارکرد خالی میباشد");
            }

            return(result);
        }
Beispiel #3
0
        public void DenyWorkHour(WorkHour wh)
        {
            var stagecontroller = new StageController(_UOW);


            stagecontroller.SetPreviusStage(wh);
            _UOW.SaveChanges();
        }
Beispiel #4
0
        public void SendWorkHour(WorkHour workHour)
        {
            StageController stage = new StageController(_UOW);

            stage.SetNextStageID(workHour);

            _UOW.WorkHourRepository.Edit(workHour);
            _UOW.SaveChanges();
        }
Beispiel #5
0
        /// <summary>
        /// WorkHour متد مشخص کردن مدیر پروژه بودن کاربر جاری توسط آبجکت
        /// </summary>
        /// <param name="workHour"></param>
        /// <returns></returns>
        public bool IsUserProjectMnager(WorkHour workHour, string userName)
        {
            var userManager    = new UserManager(_UOW);
            var projectManager = new ProjectManager(_UOW);
            var currentUser    = userManager.GetByUserName(userName);
            var project        = projectManager.GetByID(workHour.ProjectId);

            if (currentUser.ID == project.OwnerID)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #6
0
        /// <summary>
        /// WorkHour متد مشخص کردن مدیر ستادی بودن کاربر جاری توسط آبجکت
        /// </summary>
        /// <param name="workHour"></param>
        /// <returns></returns>
        public bool IsUserOrganisationMnager(WorkHour workHour, string userName)
        {
            var userManager = new UserManager(_UOW);
            var orgManager  = new OrgUnitManager(_UOW);
            var currentUser = userManager.GetByUserName(userName);
            var orgId       = userManager.GetByID(workHour.EmployeeID).OrganizationUnit.ID;
            var orgmanager  = orgManager.GetByID(orgId);

            if (orgmanager.ManagerID == currentUser.ID)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #7
0
        public void SaveWorkHour(WorkHour workHour)
        {
            var erros = new Validations().ValidateRegisterWorkHour(workHour);

            if (erros.Any())
            {
                throw new ValidationException(erros);
            }
            workHour.PreviousStage = workHour.WorkflowStageID;
            if (_UOW.WorkHourRepository.IsExistById(workHour.ID))
            {
                EditWorkHour(workHour);
            }
            else
            {
                AddWorkHour(workHour);
            }
            _UOW.SaveChanges();
        }
        /// <summary>
        ///وضعیت تایید ساعت کار با توجه به کاربر جاری
        /// </summary>
        /// <param name="workHour"></param>
        /// <returns>" "</returns>
        /// <returns>"Approve "</returns>
        /// <returns>"NotApprove "</returns>
        /// <returns>"Nothing "</returns>
        public string ApprovementStatus(WorkHour workHour, string userName)
        {
            var result          = string.Empty;
            var workflowManager = new WorkflowManager(_UOW);
            var stage           = workflowManager.GetByID(workHour.WorkflowStageID);


            if (IsUserProjectMnager(workHour, userName) && IsUserOrganisationMnager(workHour, userName) && stage.Order == 2)
            {
                return("NotApprove");
            }
            if (IsUserProjectMnager(workHour, userName) && IsUserOrganisationMnager(workHour, userName) && stage.Order == 3)
            {
                return("NotApprove");
            }
            if (IsUserProjectMnager(workHour, userName) && IsUserOrganisationMnager(workHour, userName) && stage.Order > 3)
            {
                return("Approve");
            }

            if (IsUserProjectMnager(workHour, userName) && stage.Order == 2)
            {
                return("NotApprove");
            }
            if (IsUserProjectMnager(workHour, userName) && stage.Order >= 3)
            {
                return("Approve");
            }
            if (IsUserOrganisationMnager(workHour, userName) && stage.Order <= 2)
            {
                return("Nothing");
            }
            if (IsUserOrganisationMnager(workHour, userName) && stage.Order == 3)
            {
                return("NotApprove");
            }
            if (IsUserOrganisationMnager(workHour, userName) && stage.Order > 3)
            {
                return("Approve");
            }

            return(result);
        }
Beispiel #9
0
        /// <summary>
        ///وضعیت تایید ساعت کار با توجه به کاربر جاری
        /// </summary>
        /// <param name="workHour"></param>
        /// <returns>" "</returns>
        /// <returns>"Approve "</returns>
        /// <returns>"NotApprove "</returns>
        /// <returns>"Nothing "</returns>
        public string ApprovementStatus(WorkHour workHour, string userName)
        {
            var result          = string.Empty;
            var workflowManager = new WorkflowManager(_UOW);
            var stage           = workflowManager.GetByID(workHour.WorkflowStageID);



            var isProjectManager      = IsUserProjectMnager(workHour, userName);
            var isOrganizationManager = IsUserOrganisationMnager(workHour, userName);

            if (!isProjectManager && !isOrganizationManager)
            {
                return("Nothing");
            }

            if (stage.Order > 3)
            {
                return("Approve");
            }
            if (stage.Order < 2)
            {
                return("Nothing");
            }


            // الان یا 2 است یا 3
            if (isProjectManager && isOrganizationManager)
            {
                return("NotApprove");
            }
            if (isProjectManager && stage.Type == "ProjectManager")
            {
                return("NotApprove");
            }
            if (isOrganizationManager && stage.Type == "Manager")
            {
                return("NotApprove");
            }

            return("Approve");


            if (IsUserProjectMnager(workHour, userName) && IsUserOrganisationMnager(workHour, userName) && stage.Order == 2)
            {
                return("NotApprove");
            }
            if (IsUserProjectMnager(workHour, userName) && IsUserOrganisationMnager(workHour, userName) && stage.Order == 3)
            {
                return("NotApprove");
            }
            if (IsUserProjectMnager(workHour, userName) && IsUserOrganisationMnager(workHour, userName) && stage.Order > 3)
            {
                return("Approve");
            }

            if (IsUserProjectMnager(workHour, userName) && stage.Order == 2)
            {
                return("NotApprove");
            }
            if (IsUserProjectMnager(workHour, userName) && stage.Order >= 3)
            {
                return("Approve");
            }
            if (IsUserOrganisationMnager(workHour, userName) && stage.Order <= 2)
            {
                return("Nothing");
            }
            if (IsUserOrganisationMnager(workHour, userName) && stage.Order == 3)
            {
                return("NotApprove");
            }
            if (IsUserOrganisationMnager(workHour, userName) && stage.Order > 3)
            {
                return("Approve");
            }

            return(result);
        }
Beispiel #10
0
 void EditWorkHour(WorkHour entity)
 {
     _UOW.WorkHourRepository.Edit(entity);
 }
Beispiel #11
0
 void AddWorkHour(WorkHour entity)
 {
     _UOW.WorkHourRepository.Add(entity);
 }
Beispiel #12
0
 public void SetNewStage(WorkHour workHour)
 {
     _UOW.WorkHourRepository.SetNewStage(workHour);
 }
Beispiel #13
0
        public List <string> ValidateSendrWorkHour(WorkHour workHour, bool isOpen, bool mustHaveHozoor, int registeredWorkhourMinuteThisDate, int?hozoor)
        {
            List <string> result = new List <string>();

            if (workHour == null)
            {
                result.Add("کارکرد خالی میباشد");
            }

            if (workHour.Date == DateTime.MinValue)
            {
                result.Add("تاریخ کارکرد خالی میباشد");
            }

            if (result.Count > 0)
            {
                return(result);
            }

            if (!isOpen)
            {
                result.Add($"تایم شیت در این تاریخ {DateUtility.GetPersianDate(workHour.Date)} بسته است. امکان تغییر نمی باشد");
            }
            else
            {
                if (mustHaveHozoor)
                {
                    if (!hozoor.HasValue && hozoor == 0)
                    {
                        result.Add($"در این تاریخ {DateUtility.GetPersianDate(workHour.Date)} حضور یافت نشد. امکان ارسال کارکرد نمی باشد");
                    }
                    if (hozoor.HasValue && registeredWorkhourMinuteThisDate > hozoor)
                    {
                        result.Add("کارکرد بیش از حضور. امکان ارسال کارکرد نمی باشد");
                    }
                }
            }
            if (result.Count > 0)
            {
                return(result);
            }


            if (workHour.Minutes <= 0)
            {
                result.Add("ساعت کارکرد خالی میباشد");
            }
            if (workHour.EmployeeID == Guid.Empty)
            {
                result.Add("کاربر خالی میباشد");
            }
            if (workHour.WorkflowStageID == Guid.Empty)
            {
                result.Add("مرحله کارکرد خالی میباشد");
            }
            if (workHour.TaskID == Guid.Empty)
            {
                result.Add("وظیفه کارکرد خالی میباشد");
            }
            if (workHour.ProjectId == Guid.Empty)
            {
                result.Add("پروژه کارکرد خالی میباشد");
            }

            return(result);
        }