/// <summary>
        ///
        /// </summary>
        /// <param name="assignWorkGroup">گروه کاری تخصیص داده شده به پرسنل</param>
        protected override void InsertValidate(AssignWorkGroup assignWorkGroup)
        {
            UIValidationExceptions exception = new UIValidationExceptions();

            PersonRepository    personRep = new PersonRepository(false);
            WorkGroupRepository workRep   = new WorkGroupRepository(false);

            if (assignWorkGroup.Person == null || personRep.GetCountByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new Person().ID), assignWorkGroup.Person.ID)) == 0)
            {
                exception.Add(new ValidationException(ExceptionResourceKeys.AssignWorkGroupPersonIdNotExsits, "پرسنلی با این مشخصات یافت نشد", ExceptionSrc));
            }

            if (assignWorkGroup.WorkGroup == null || workRep.GetCountByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new WorkGroup().ID), assignWorkGroup.WorkGroup.ID)) == 0)
            {
                exception.Add(new ValidationException(ExceptionResourceKeys.AssignWorkGroupIdNotExsits, "گروه کاری با این مشخصات یافت نشد", ExceptionSrc));
            }
            if (assignWorkGroup.FromDate < Utility.GTSMinStandardDateTime)
            {
                exception.Add(new ValidationException(ExceptionResourceKeys.AssignWorkGroupSmallerThanStandardValue, "مقدار تاریخ انتساب گروه محدوده محاسبات از حد مجاز کمتر میباشد", ExceptionSrc));
            }
            if (asignRepository.Find(x => x.Person.ID == assignWorkGroup.Person.ID && x.FromDate.Date == assignWorkGroup.FromDate.Date).Count() > 0)
            {
                exception.Add(new ValidationException(ExceptionResourceKeys.AssignWorkGroupIsRepeated, "تاریخ تکراری است", ExceptionSrc));
            }
            if (exception.Count > 0)
            {
                throw exception;
            }
        }
        public void UpdateCFPByWorkGroupId(decimal workGroupId, DateTime minChangeDate)
        {
            IList <CFP> cfpList = new List <CFP>();
            Dictionary <decimal, DateTime> uivalidationGroupIdDic = new Dictionary <decimal, DateTime>();
            WorkGroupRepository            workGroupRep           = new WorkGroupRepository(false);
            WorkGroup wg = workGroupRep.GetById(workGroupId, false);
            IList <AssignWorkGroup> assignWorkGroupList = wg.AssignWorkGroupList;
            IList <CFP>             cfpPersonList       = new List <CFP>();

            if (assignWorkGroupList.Count > 0)
            {
                cfpPersonList = base.GetCFPPersons(assignWorkGroupList.Select(a => a.Person.ID).ToList <decimal>());
            }
            IList <decimal> UiValidationGroupIdList = uivalidationGroupingRepository.GetUivalidationIdListByWorkGroup(workGroupId);
            IList <decimal> cfpPersonIdInsertList   = new List <decimal>();

            foreach (decimal uiValidateionGrpId in UiValidationGroupIdList)
            {
                if (!uivalidationGroupIdDic.ContainsKey(uiValidateionGrpId))
                {
                    DateTime calculationLockDate = base.UIValidator.GetCalculationLockDateByGroup(uiValidateionGrpId);
                    uivalidationGroupIdDic.Add(uiValidateionGrpId, calculationLockDate);
                }
            }

            base.UpdateCfpByWrokGroup(wg.ID, uivalidationGroupIdDic);
            cfpPersonIdInsertList = assignWorkGroupList.Where(p => cfpPersonList != null && !cfpPersonList.Select(c => c.PrsId).ToList().Contains(p.Person.ID)).Select(p => p.Person.ID).Distinct().ToList <decimal>();
            if (cfpPersonIdInsertList.Count > 0)
            {
                base.InsertCfpByWrokGroup(cfpPersonIdInsertList, wg.ID, uivalidationGroupIdDic);
            }
        }
Beispiel #3
0
        public void CheckInterfaceRuleGroup(ShiftPair pair)
        {
            BWorkGroupCalendar  busWorkGroup = new BWorkGroupCalendar();
            WorkGroupRepository workRep      = new WorkGroupRepository(false);
            IList <WorkGroup>   list         = workRep.GetAllWorkGroupByShift(pair.ShiftId);

            foreach (WorkGroup workGroup in list)
            {
                busWorkGroup.CheckInterfaceRuleGroup(workGroup.ID);
            }
        }
Beispiel #4
0
 IList <decimal> IDataAccess.GetAccessibleWorkGroups()
 {
     if (userRepository.HasAllWorkGroupAccess(this.CurrentUserId) > 0)
     {
         IList <WorkGroup> list = new WorkGroupRepository(false).GetAll();
         var ids = from obj in list
                   select obj.ID;
         return(ids.ToList <decimal>());
     }
     else
     {
         return(userRepository.GetUserWorkGroupIdList(this.CurrentUserId));
     }
 }
Beispiel #5
0
 protected void UpdateCFP(ShiftPair obj, UIActionType action)
 {
     //return;
     if (action == UIActionType.ADD || action == UIActionType.EDIT || action == UIActionType.DELETE)
     {
         BWorkGroupCalendar  busWorkGroup = new BWorkGroupCalendar();
         WorkGroupRepository workRep      = new WorkGroupRepository(false);
         IList <WorkGroup>   list         = workRep.GetAllWorkGroupByShift(obj.ShiftId);
         foreach (WorkGroup workGroup in list)
         {
             DateTime?firstUse = shiftRepository.GetFirstShiftUsedInWorkGroup(obj.ShiftId, workGroup.ID);
             if (firstUse != null && firstUse > Utility.GTSMinStandardDateTime)
             {
                 busWorkGroup.UpdateCFPByWorkGroupId(workGroup.ID, (DateTime)firstUse);
             }
         }
     }
 }
        /// <summary>
        /// بررسی حداقل تاریخ
        /// بررسی تکراری نبودن تاریخ
        /// </summary>
        /// <param name="person">پرسنل</param>
        /// <param name="fromDate">از تاریخ</param>
        /// <param name="message"></param>
        /// <returns>وضعیت انجام عملیات</returns>
        private bool ValidateWorkGroupAssignment(Person person, DateTime fromDate, ref string message)
        {
            PersonRepository    personRep = new PersonRepository(false);
            WorkGroupRepository workRep   = new WorkGroupRepository(false);
            EntityRepository <AssignWorkGroup> asignRepository = new EntityRepository <AssignWorkGroup>(false);

            if (fromDate <= Utility.GTSMinStandardDateTime)
            {
                message += "مقدار تاریخ انتساب گروه کاری از حد مجاز کمتر میباشد" + " --- ";
            }
            //else if (asignRepository.GetCountByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new AssignWorkGroup().Person), person),
            //    new CriteriaStruct(Utility.GetPropertyName(() => new AssignWorkGroup().FromDate), fromDate, CriteriaOperation.Equal)) > 0)
            //{
            //    message += "قبلا در این تاریخ گروه کاری دیگری انتساب داده شده است" + " --- ";
            //}

            return(Utility.IsEmpty(message));
        }
        public void UpdateCFPByWorkGroupId(decimal workGroupId, DateTime minChangeDate)
        {
            IList <CFP> cfpList = new List <CFP>();
            Dictionary <decimal, DateTime> lockDates    = new Dictionary <decimal, DateTime>();
            WorkGroupRepository            workGroupRep = new WorkGroupRepository(false);
            WorkGroup wg = workGroupRep.GetById(workGroupId, false);

            foreach (AssignWorkGroup assign in wg.AssignWorkGroupList)
            {
                DateTime calculationLockDate = DateTime.Now;
                decimal  personId            = assign.Person.ID;
                if (assign.Person.PersonTASpec.UIValidationGroup != null)
                {
                    decimal uiValidateionGrpId = assign.Person.PersonTASpec.UIValidationGroup.ID;
                    if (!lockDates.ContainsKey(uiValidateionGrpId))
                    {
                        calculationLockDate = base.UIValidator.GetCalculationLockDateByGroup(assign.Person.PersonTASpec.UIValidationGroup.ID);
                        lockDates.Add(uiValidateionGrpId, calculationLockDate);
                    }
                    else
                    {
                        calculationLockDate = lockDates[uiValidateionGrpId];
                    }
                }
                CFP      cfp        = base.GetCFP(personId);
                DateTime newCfpDate = assign.FromDate;


                //بسته بودن محاسبات
                if (calculationLockDate > Utility.GTSMinStandardDateTime && calculationLockDate > newCfpDate)
                {
                    newCfpDate = calculationLockDate.AddDays(1);
                }
                if (cfp.ID == 0 || cfp.Date > newCfpDate)
                {
                    cfp.Date  = newCfpDate.Date;
                    cfp.PrsId = personId;
                    cfpList.Add(cfp);
                }
            }
            base.UpdateCFP(cfpList, false);
        }
        public int SaveChanges(IList <CalendarCellInfo> cellInfoList, decimal workGroupId, int year)
        {
            try
            {
                WorkGroupRepository workGroupRep = new WorkGroupRepository(false);
                DateTime            minDate      = new DateTime();
                DateTime            maxDate      = new DateTime();

                if (sysLangruage == SysLanguageResource.Parsi)
                {
                    minDate = Utility.ToMildiDate(String.Format("{0}/01/01", year));
                    maxDate = Utility.ToMildiDate(String.Format("{0}/01/01", year + 1));
                }
                else if (sysLangruage == SysLanguageResource.English)
                {
                    minDate = new DateTime(year, 1, 1);
                    maxDate = new DateTime(year + 1, 1, 1);
                }

                int count = cellInfoList.GroupBy(x => x.Key)
                            .Where(g => g.Count() > 1).Count();

                if (count > 0)
                {
                    UIValidationExceptions exception = new UIValidationExceptions();
                    exception.Add(ExceptionResourceKeys.WorkGroupCalendarDublicateDate, "برای روز دوبار شیفت انتساب داده شده است", ExceptionSrc);
                    throw exception;
                }

                workGroupRep.DeleteWorkGroupDetail(workGroupId, minDate, maxDate.AddDays(-1));
                IList <WorkGroupDetail> detailList = new List <WorkGroupDetail>();

                foreach (CalendarCellInfo cellInfo in cellInfoList)
                {
                    if (cellInfo.ShiftID != 0)
                    {
                        WorkGroupDetail detail = new WorkGroupDetail();
                        DateTime        date   = new DateTime();
                        if (sysLangruage == SysLanguageResource.Parsi)
                        {
                            date = Utility.ToMildiDate(String.Format("{0}/{1}/{2}", year, cellInfo.Month, cellInfo.Day));
                        }
                        else if (sysLangruage == SysLanguageResource.English)
                        {
                            date = new DateTime(year, cellInfo.Month, cellInfo.Day);
                        }
                        detail.WorkGroup = new WorkGroup()
                        {
                            ID = workGroupId
                        };
                        detail.Date  = date;
                        detail.Shift = new Shift()
                        {
                            ID = cellInfo.ShiftID
                        };
                        base.SaveChanges(detail, UIActionType.ADD);
                    }
                }
                this.UpdateCFPByWorkGroupId(workGroupId, minDate);
                return(cellInfoList.Count);
            }
            catch (Exception ex)
            {
                LogException(ex, "BWorkGroupCalendar", "SaveChanges");
                throw ex;
            }
        }