Ejemplo n.º 1
0
        public void TestSetup()
        {
            busChnageInfo     = new BChangeOrganicInfo();
            person_testObject = new Person();
            infoProxy         = new OrganicInfoProxy();
            errorList         = new List <ChangeInfoErrorProxy>();

            workgrpTA.Insert("WorkGroupTest1", "0-0", 0);
            workgrpTA.Insert("WorkGroupTest2", "0-1", 0);

            DatabaseGateway.TA_WorkGroupDataTable             table = new DatabaseGateway.TA_WorkGroupDataTable();
            DatabaseGateway.TA_CalculationRangeGroupDataTable dateRangeGroupTable = new DatabaseGateway.TA_CalculationRangeGroupDataTable();
            DatabaseGateway.TA_RuleCategoryDataTable          ruleTable           = new DatabaseGateway.TA_RuleCategoryDataTable();

            workgrpTA.FillByName(table, "WorkGroupTest1");
            ADOWorkGroup1.ID         = Convert.ToInt32(table.Rows[0]["workgroup_ID"]);
            ADOWorkGroup1.Name       = Convert.ToString(table.Rows[0]["workgroup_Name"]);
            ADOWorkGroup1.CustomCode = Convert.ToString(table.Rows[0]["workgroup_CustomCode"]);

            workgrpTA.FillByName(table, "WorkGroupTest2");
            ADOWorkGroup2.ID         = Convert.ToInt32(table.Rows[0]["workgroup_ID"]);
            ADOWorkGroup2.Name       = Convert.ToString(table.Rows[0]["workgroup_Name"]);
            ADOWorkGroup2.CustomCode = Convert.ToString(table.Rows[0]["workgroup_CustomCode"]);

            assignWorkGroupTA.Insert(ADOWorkGroup1.ID, ADOPerson1.ID, new DateTime(2011, 01, 01));

            dateRangeGroupTA.Insert("RangeGroup1", "", 1);
            dateRangeGroupTA.Insert("RangeGroup2", "", 1);

            dateRangeGroupTA.FillByGroupName(dateRangeGroupTable, "RangeGroup1");
            ADOGroup1.ID          = Convert.ToDecimal(dateRangeGroupTable.Rows[0]["CalcRangeGroup_ID"]);
            ADOGroup1.Name        = Convert.ToString(dateRangeGroupTable.Rows[0]["CalcRangeGroup_Name"]);
            ADOGroup1.Description = Convert.ToString(dateRangeGroupTable.Rows[0]["CalcRangeGroup_Des"]);

            dateRangeGroupTA.FillByGroupName(dateRangeGroupTable, "RangeGroup2");

            ADOGroup2.ID          = Convert.ToDecimal(dateRangeGroupTable.Rows[0]["CalcRangeGroup_ID"]);
            ADOGroup2.Name        = Convert.ToString(dateRangeGroupTable.Rows[0]["CalcRangeGroup_Name"]);
            ADOGroup2.Description = Convert.ToString(dateRangeGroupTable.Rows[0]["CalcRangeGroup_Des"]);

            assinTA.Insert(ADOPerson1.ID, ADOGroup1.ID, new DateTime(2011, 01, 01));

            ruleCatTA.Insert("RuleGroupTest1", "0000", false, "00-00test1");
            ruleCatTA.Insert("RuleGroupTest2", "0000", false, "00-00test1");

            ruleTable        = ruleCatTA.GetDataByName("RuleGroupTest1");
            ADORuleCat1.ID   = (Decimal)ruleTable[0]["RuleCat_ID"];
            ADORuleCat1.Name = (String)ruleTable[0]["RuleCat_Name"];

            ruleTable        = ruleCatTA.GetDataByName("RuleGroupTest2");
            ADORuleCat2.ID   = (Decimal)ruleTable[0]["RuleCat_ID"];
            ADORuleCat2.Name = (String)ruleTable[0]["RuleCat_Name"];

            ruleTA.Insert(0001, "", "", "", null, false, ADORuleCat1.ID, Utility.ToInteger(ruleTypeTA.GetData().Rows[0][0]), 0);
            ruleTA.Insert(0001, "", "", "", null, false, ADORuleCat2.ID, Utility.ToInteger(ruleTypeTA.GetData().Rows[0][0]), 0);

            prsRleCatAsgTA.Insert(ADOPerson1.ID, ADORuleCat2.ID, "2011/01/01", "2011/06/01", null);
        }
Ejemplo n.º 2
0
        private OrganicInfoProxy CreatePersonnelOrganizationFeaturesTarget(string StrObjPersonnelOrganizationFeaturesTarget)
        {
            OrganicInfoProxy            PersonnelOrganizationFeaturesTargetProxy = new OrganicInfoProxy();
            Dictionary <string, object> ParamDic = (Dictionary <string, object>) this.JsSerializer.DeserializeObject(StrObjPersonnelOrganizationFeaturesTarget);

            if (decimal.Parse(ParamDic["DepartmentID"].ToString(), CultureInfo.InvariantCulture) != -1)
            {
                PersonnelOrganizationFeaturesTargetProxy.DepartmentID = decimal.Parse(ParamDic["DepartmentID"].ToString(), CultureInfo.InvariantCulture);
            }
            if (decimal.Parse(ParamDic["EmployTypeID"].ToString(), CultureInfo.InvariantCulture) != -1)
            {
                PersonnelOrganizationFeaturesTargetProxy.EmploymentTypeID = decimal.Parse(ParamDic["EmployTypeID"].ToString(), CultureInfo.InvariantCulture);
            }
            if (decimal.Parse(ParamDic["WorkGroupID"].ToString(), CultureInfo.InvariantCulture) != -1)
            {
                PersonnelOrganizationFeaturesTargetProxy.WorkGroupID = decimal.Parse(ParamDic["WorkGroupID"].ToString(), CultureInfo.InvariantCulture);
            }
            if (ParamDic["WorkGroupFromDate"].ToString() != string.Empty)
            {
                PersonnelOrganizationFeaturesTargetProxy.WorkGroupFromDate = ParamDic["WorkGroupFromDate"].ToString();
            }
            if (decimal.Parse(ParamDic["CalculationRangeID"].ToString(), CultureInfo.InvariantCulture) != -1)
            {
                PersonnelOrganizationFeaturesTargetProxy.DateRangeID = decimal.Parse(ParamDic["CalculationRangeID"].ToString(), CultureInfo.InvariantCulture);
            }
            if (ParamDic["CalculationRangeFromDate"].ToString() != string.Empty)
            {
                PersonnelOrganizationFeaturesTargetProxy.DateRangeFromDate = ParamDic["CalculationRangeFromDate"].ToString();
            }
            if (decimal.Parse(ParamDic["RuleGroupID"].ToString(), CultureInfo.InvariantCulture) != -1)
            {
                PersonnelOrganizationFeaturesTargetProxy.RuleGroupID = decimal.Parse(ParamDic["RuleGroupID"].ToString(), CultureInfo.InvariantCulture);
            }
            if (ParamDic["RuleGroupFromDate"].ToString() != string.Empty)
            {
                PersonnelOrganizationFeaturesTargetProxy.RuleGroupFromDate = ParamDic["RuleGroupFromDate"].ToString();
            }
            if (ParamDic["RuleGroupToDate"].ToString() != string.Empty)
            {
                PersonnelOrganizationFeaturesTargetProxy.RuleGroupToDate = ParamDic["RuleGroupToDate"].ToString();
            }
            if (decimal.Parse(ParamDic["ContractID"].ToString(), CultureInfo.InvariantCulture) != -1)
            {
                PersonnelOrganizationFeaturesTargetProxy.ContractID = decimal.Parse(ParamDic["ContractID"].ToString(), CultureInfo.InvariantCulture);
            }
            if (ParamDic["ContractFromDate"].ToString() != string.Empty)
            {
                PersonnelOrganizationFeaturesTargetProxy.ContractFromDate = ParamDic["ContractFromDate"].ToString();
            }
            if (ParamDic["ContractToDate"].ToString() != string.Empty)
            {
                PersonnelOrganizationFeaturesTargetProxy.ContractToDate = ParamDic["ContractToDate"].ToString();
            }
            return(PersonnelOrganizationFeaturesTargetProxy);
        }
Ejemplo n.º 3
0
        public void ChangeInfo_AsgWrkGrp_LessDate()
        {
            OrganicInfoProxy infoProxy = new OrganicInfoProxy();

            infoProxy.WorkGroupID       = ADOWorkGroup2.ID;
            infoProxy.WorkGroupFromDate = Utility.ToPersianDate(new DateTime(2010, 12, 01));

            IList <ChangeInfoErrorProxy> errorList = new List <ChangeInfoErrorProxy>();
            bool result = busChnageInfo.ChangeInfo(ADOPerson1.PersonCode, infoProxy, out errorList);

            Assert.IsFalse(result);
            Assert.IsTrue(errorList.Count > 0);
            Assert.IsTrue(errorList.Where(x => x.PersonCode == ADOPerson1.PersonCode).Count() > 0);
        }
Ejemplo n.º 4
0
        protected void Button49_Click(object sender, EventArgs e)
        {
            PersonAdvanceSearchProxy pas = new PersonAdvanceSearchProxy()
            {
                RuleGroupId = 26, PersonActivateState = true
            };
            IList <ChangeInfoErrorProxy> msg  = new List <ChangeInfoErrorProxy>();
            OrganicInfoProxy             info = new OrganicInfoProxy()
            {
                RuleGroupID = 27, RuleGroupFromDate = "1392/07/01"                                             /*, RuleGroupToDate = "1392/08/01"*/
            };
            BChangeOrganicInfo bus = new BChangeOrganicInfo();

            bus.ChangeInfo(pas, info, out msg);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// تغییر مشخصات سازمانی
        /// </summary>
        /// <param name="searchKey">عبارت جستجو</param>
        /// <param name="infoProxy">پروکسی مشخصات سازمانی</param>
        /// <param name="errorList">خروجی لیست خطاها</param>
        /// <returns>وضعیت انجام عملیات</returns>
        public bool ChangeInfo(string searchKey, OrganicInfoProxy infoProxy, out IList <ChangeInfoErrorProxy> errorList)
        {
            int            count = searchTool.GetPersonInQuickSearchCount(searchKey);
            IList <Person> list  = searchTool.QuickSearchByPage(0, count, searchKey);

            bool result = this.ChangeInfo(list, infoProxy, out errorList);

            if (!result)
            {
                foreach (ChangeInfoErrorProxy error in errorList)
                {
                    BaseBusiness <Entity> .LogException(new Exception(error.ToString()));
                }
            }
            return(result);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// تغییر مشخصات سازمانی
        /// </summary>
        /// <param name="proxy"></param>
        ///
        public bool ChangeInfo(PersonAdvanceSearchProxy proxy, OrganicInfoProxy infoProxy, out IList <ChangeInfoErrorProxy> errorList)
        {
            int            count = searchTool.GetPersonInAdvanceSearchCount(proxy);
            IList <Person> list  = searchTool.GetPersonInAdvanceSearch(proxy, 0, count);

            bool result = this.ChangeInfo(list, infoProxy, out errorList);

            if (!result)
            {
                foreach (ChangeInfoErrorProxy error in errorList)
                {
                    BaseBusiness <Entity> .LogException(new Exception(error.ToString()));
                }
            }
            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// تغییر مشخصات سازمانی پرسنل تحت مدیریت
        /// </summary>
        /// <param name="personList">لیست پرسنل</param>
        /// <param name="infoProxy">پروکسی مشخصات سازمانی</param>
        private void UpdateUnderManagement(IList <Person> personList, OrganicInfoProxy infoProxy)
        {
            try
            {
                if (infoProxy.DepartmentID != 0)
                {
                    IQuery         query         = null;
                    List <decimal> personIdList  = new List <decimal>();
                    string         operationGUID = string.Empty;
                    string         SQLCommand    = string.Empty;
                    operationGUID = string.Empty;
                    foreach (Person person in personList)
                    {
                        personIdList.Add(person.ID);
                    }
                    if (personList.Count < this.operationBatchSizeValue && this.operationBatchSizeValue < 2100)
                    {
                        SQLCommand = @"Update TA_UnderManagment SET underMng_DepartmentID =:DepartmentId  WHERE  underMng_PersonID in (:PersonList)";
                        query      = NHibernateSessionManager.Instance.GetSession().CreateSQLQuery(SQLCommand);
                        query.SetParameter("DepartmentId", infoProxy.DepartmentID);
                        query.SetParameterList("PersonList", personIdList);
                        query.ExecuteUpdate();
                    }
                    else
                    {
                        TempRepository temprepository = new TempRepository(false);
                        operationGUID = temprepository.InsertTempList(personIdList);
                        //                    SQLCommand = @"Update TA_UnderManagment SET underMng_DepartmentID =:DepartmentId  WHERE  underMng_PersonId in
                        //                    (select prs_Id from TA_Person Inner join TA_Temp on prs_Id = temp_ObjectID WHERE temp_OperationGUID =:operationGUID)";
                        SQLCommand = @"Update underMng SET underMng_DepartmentID =:DepartmentId from TA_UnderManagment underMng
                                   inner join TA_Person person on underMng.underMng_PersonId = person.prs_Id
                                   inner join TA_Temp temp on person.prs_Id = temp.temp_ObjectID and temp.temp_OperationGUID =:operationGUID";
                        query      = NHibernateSessionManager.Instance.GetSession().CreateSQLQuery(SQLCommand);
                        query.SetParameter("DepartmentId", infoProxy.DepartmentID);
                        query.SetParameter("operationGUID", operationGUID);
                        query.ExecuteUpdate();
                        temprepository.DeleteTempList(operationGUID);
                    }
                }
            }
            catch (Exception ex)
            {
                BaseBusiness <Entity> .LogException(ex, "BChangeOrganicInfo", "UpdateUnderManagement");

                throw ex;
            }
        }
Ejemplo n.º 8
0
        public bool ChangeInfo(decimal personId, OrganicInfoProxy infoProxy, out IList <ChangeInfoErrorProxy> errorList)
        {
            Person         prs  = new BPerson().GetByID(personId);
            IList <Person> list = new List <Person>();

            list.Add(prs);
            bool result = this.ChangeInfo(list, infoProxy, out errorList);

            if (!result)
            {
                foreach (ChangeInfoErrorProxy error in errorList)
                {
                    BaseBusiness <Entity> .LogException(new Exception(error.ToString()));
                }
            }
            return(result);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// تغییر مشخصات سازمانی
        /// </summary>
        /// <param name="personId">کلید پرسنل</param>
        /// <param name="infoProxy">پروکسی مشخصات سازمانی</param>
        /// <param name="errorList">خروجی لیست خطاها</param>
        /// <returns>وضعیت انجام عملیات</returns>
        public bool ChangeInfo(decimal personId, OrganicInfoProxy infoProxy, out IList <ChangeInfoErrorProxy> errorList)
        {
            //Person prs = new BPerson().GetByID(personId);
            //NHibernateSessionManager.Instance.ClearSession();
            //Person prs = new Person() { ID = personId, PersonTASpec = (new BPerson()).GetPersonTASpecByID(personId)};
            PersonAdvanceSearchProxy proxy = new PersonAdvanceSearchProxy();

            proxy.PersonId = personId;
            //IList<Person> list = new List<Person>();
            //list.Add(prs);
            bool result = this.ChangeInfo(proxy, infoProxy, out errorList);

            //if (!result)
            //    foreach (ChangeInfoErrorProxy error in errorList)
            //    {
            //        BaseBusiness<Entity>.LogException(new Exception(error.ToString()));
            //    }
            return(result);
        }
Ejemplo n.º 10
0
        public string[] UpdatePersonnelOrganizationFeature_PersonnelOrganizationFeaturesChangePage(string PersonnelLoadState, string PersonnelID, string SearchTerm, string StrObjPersonnelOrganizationFeaturesTarget)
        {
            this.InitializeCulture();

            string[] retMessage = new string[4];

            try
            {
                bool      OperationState = false;
                LoadState Ls             = (LoadState)Enum.Parse(typeof(LoadState), this.StringBuilder.CreateString(PersonnelLoadState));
                decimal   personnelID    = decimal.Parse(this.StringBuilder.CreateString(PersonnelID));
                SearchTerm = this.StringBuilder.CreateString(SearchTerm);
                OrganicInfoProxy             PersonnelOrganizationFeaturesTargetProxy = this.CreatePersonnelOrganizationFeaturesTarget(this.StringBuilder.CreateString(StrObjPersonnelOrganizationFeaturesTarget));
                IList <ChangeInfoErrorProxy> PersonnelProblemsList = null;
                if (personnelID == -1)
                {
                    switch (Ls)
                    {
                    case LoadState.Normal:
                        retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.Exception, new Exception(GetLocalResourceObject("NoPersonnelSelected").ToString()), retMessage);
                        break;

                    case LoadState.Search:
                        OperationState = this.PersonnelOrganizationFeaturesBusiness.ChangeInfo(SearchTerm, PersonnelOrganizationFeaturesTargetProxy, out PersonnelProblemsList);
                        break;

                    case LoadState.AdvancedSearch:
                        OperationState = this.PersonnelOrganizationFeaturesBusiness.ChangeInfo(this.APSProv.CreateAdvancedPersonnelSearchProxy(SearchTerm), PersonnelOrganizationFeaturesTargetProxy, out PersonnelProblemsList);
                        break;
                    }
                }
                else
                {
                    OperationState = this.PersonnelOrganizationFeaturesBusiness.ChangeInfo(personnelID, PersonnelOrganizationFeaturesTargetProxy, out PersonnelProblemsList);
                }
                if (OperationState)
                {
                    retMessage[0] = GetLocalResourceObject("RetSuccessType").ToString();
                    retMessage[1] = GetLocalResourceObject("OperationComplete").ToString();
                    retMessage[2] = "success";
                }
                else
                {
                    retMessage[0] = GetLocalResourceObject("RetErrorType").ToString();
                    retMessage[1] = GetLocalResourceObject("OperationNotComplete").ToString();
                    retMessage[2] = "error";
                }
                retMessage[3] = OperationState.ToString().ToLower();
                return(retMessage);
            }
            catch (UIValidationExceptions ex)
            {
                retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.UIValidationExceptions, ex, retMessage);
                return(retMessage);
            }
            catch (UIBaseException ex)
            {
                retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.UIBaseException, ex, retMessage);
                return(retMessage);
            }
            catch (Exception ex)
            {
                retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.Exception, ex, retMessage);
                return(retMessage);
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// تغییر مشخصات سازمانی
        /// </summary>
        /// <param name="personList">لیست پرسنل</param>
        /// <param name="infoProxy">پروکسی مشخصات سازمانی</param>
        /// <param name="errorList">خروجی لیست خطاها</param>
        /// <returns>وضعیت انجام عملیات</returns>
        private bool ChangeInfo(IList <Person> personList, OrganicInfoProxy infoProxy, out IList <ChangeInfoErrorProxy> errorList)
        {
            IList <PersonRuleCatAssignment>  ruleAssgnList      = new List <PersonRuleCatAssignment>();
            IList <PersonRangeAssignment>    rangeAssgnList     = new List <PersonRangeAssignment>();
            IList <AssignWorkGroup>          workGroupAssgnList = new List <AssignWorkGroup>();
            IList <PersonContractAssignment> contractAssgnList  = new List <PersonContractAssignment>();


            #region Validate
            DateTime workGroupFromDate, ruleGroupFromDate, ruleGroupToDate, DateRangeFromDate, contractFromDate, contractToDate;
            if (BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
            {
                workGroupFromDate = Utility.ToMildiDate(infoProxy.WorkGroupFromDate);
                ruleGroupFromDate = Utility.ToMildiDate(infoProxy.RuleGroupFromDate);
                ruleGroupToDate   = Utility.ToMildiDate(infoProxy.RuleGroupToDate);
                DateRangeFromDate = Utility.ToMildiDate(infoProxy.DateRangeFromDate);
                contractFromDate  = Utility.ToMildiDate(infoProxy.ContractFromDate);
                contractToDate    = Utility.ToMildiDate(infoProxy.ContractToDate);
            }
            else
            {
                workGroupFromDate = Utility.ToMildiDateTime(infoProxy.WorkGroupFromDate);
                ruleGroupFromDate = Utility.ToMildiDateTime(infoProxy.RuleGroupFromDate);
                ruleGroupToDate   = Utility.ToMildiDateTime(infoProxy.RuleGroupToDate);
                DateRangeFromDate = Utility.ToMildiDateTime(infoProxy.DateRangeFromDate);
                contractFromDate  = Utility.ToMildiDateTime(infoProxy.ContractFromDate);
                contractToDate    = Utility.ToMildiDateTime(infoProxy.ContractToDate);
            }


            errorList = new List <ChangeInfoErrorProxy>();
            foreach (Person prs in personList)
            {
                string errorMessage = "";
                if (infoProxy.WorkGroupID > 0)
                {
                    workGroupAssgnList = new BAssignWorkGroup(BLanguage.CurrentSystemLanguage).GetAllByWorkGroupId(infoProxy.WorkGroupID);
                    ValidateWorkGroupAssignment(prs, workGroupFromDate, ref errorMessage);
                }
                if (infoProxy.RuleGroupID > 0)
                {
                    ruleAssgnList = new BAssignRule(BLanguage.CurrentSystemLanguage).GetAllByRuleGroupId(infoProxy.RuleGroupID);
                    ValidateRuleGroupAssignment(prs, ruleGroupFromDate, ruleGroupToDate, ref errorMessage);
                }
                if (infoProxy.DateRangeID > 0)
                {
                    rangeAssgnList = new BAssignDateRange(BLanguage.CurrentSystemLanguage).GetAllByRangeId(infoProxy.DateRangeID);
                    ValidateDateRangeAssignment(prs, DateRangeFromDate, ref errorMessage);
                }
                if (infoProxy.ContractID > 0)
                {
                    contractAssgnList = new BPersonContractAssignment(BLanguage.CurrentSystemLanguage).GetAllByContractId(infoProxy.ContractID);
                    ValidateContractAssignment(prs, contractFromDate, contractToDate, ref errorMessage);
                }
                if (!Utility.IsEmpty(errorMessage))
                {
                    errorList.Add(new ChangeInfoErrorProxy()
                    {
                        ErrorMessage = errorMessage, PersonCode = prs.PersonCode, PersonName = prs.Name
                    });
                    if (errorList.Count > 50)
                    {
                        break;
                    }
                }
            }
            if (errorList.Count > 0)
            {
                return(false);
            }
            #endregion

            using (NHibernateSessionManager.Instance.BeginTransactionOn())
            {
                try
                {
                    UnderManagmentRepository         underMngRep                = new UnderManagmentRepository(false);
                    List <decimal>                   personIdList               = new List <decimal>();
                    IList <OrganizationFeatureProxy> organizationFeatureList    = new List <OrganizationFeatureProxy>();
                    IList <FlowPersonsProxy>         flowPersonList             = new List <FlowPersonsProxy>();
                    List <decimal>                   PersonnelsDepartmentChange = new List <decimal>();
                    bool     cfpUpdateRequierd = false;
                    DateTime minDate           = DateTime.Now;
                    int      counter           = 0;
                    foreach (Person prs in personList)
                    {
                        counter++;
                        bool updatePrs = false;
                        personIdList.Add(prs.ID);
                        IList <OrganizationFeatureProxy> organizationFeatureExist = new List <OrganizationFeatureProxy>();
                        UnderManagment underMng = new UnderManagment();

                        #region Department
                        if (infoProxy.DepartmentID > 0)
                        {
                            if (prs.Department.ID != infoProxy.DepartmentID)
                            {
                                PersonnelsDepartmentChange.Add(prs.ID);
                            }
                            if (organizationFeatureList.Count != 0)
                            {
                                organizationFeatureExist = organizationFeatureList.Where(x => x.DepartmentId == prs.Department.ID).ToList();
                            }

                            if (organizationFeatureExist.Count == 0)
                            {
                                IList <decimal> FlowIds = underMngRep.GetDepartmentFlows(prs.Department.ID);
                                foreach (decimal flowId in FlowIds)
                                {
                                    OrganizationFeatureProxy orgFeatureProxy = new OrganizationFeatureProxy();
                                    FlowPersonsProxy         flowPerson      = new FlowPersonsProxy();
                                    orgFeatureProxy.FlowId       = flowId;
                                    orgFeatureProxy.DepartmentId = prs.Department.ID;
                                    organizationFeatureList.Add(orgFeatureProxy);
                                    flowPerson.FlowId   = flowId;
                                    flowPerson.PersonId = prs.ID;
                                    flowPersonList.Add(flowPerson);
                                }
                            }
                            else
                            {
                                IList <decimal> FlowIds = organizationFeatureExist.Select(x => x.FlowId)
                                                          .ToList <decimal>();
                                foreach (decimal flowId in FlowIds)
                                {
                                    FlowPersonsProxy flowPerson = new FlowPersonsProxy();
                                    flowPerson.FlowId   = flowId;
                                    flowPerson.PersonId = prs.ID;
                                    flowPersonList.Add(flowPerson);
                                }
                            }
                            prs.Department = new GTS.Clock.Model.Charts.Department()
                            {
                                ID = infoProxy.DepartmentID
                            };
                            updatePrs = true;
                        }
                        #endregion

                        #region Employment Type
                        if (infoProxy.EmploymentTypeID > 0)
                        {
                            prs.EmploymentType = new GTS.Clock.Model.BaseInformation.EmploymentType()
                            {
                                ID = infoProxy.EmploymentTypeID
                            };
                            updatePrs = true;
                        }
                        #endregion

                        if (updatePrs)
                        {
                            prsRepository.WithoutTransactUpdate(prs);
                        }

                        #region Rule Category
                        if (infoProxy.RuleGroupID > 0)
                        {
                            cfpUpdateRequierd = true;
                            PersonRuleCatAssignment ruleAssign  = new PersonRuleCatAssignment();
                            BAssignRule             ruleAsgnBus = new BAssignRule();
                            ruleAssgnList = ruleAsgnBus.GetAll(prs.ID);
                            IList <PersonRuleCatAssignment> confilictList =
                                ruleAssgnList.Where(x => ((Utility.ToMildiDateTime(x.FromDate) <= ruleGroupToDate && Utility.ToMildiDateTime(x.ToDate) >= ruleGroupToDate))
                                                    ||
                                                    ((Utility.ToMildiDateTime(x.FromDate) <= ruleGroupFromDate && Utility.ToMildiDateTime(x.ToDate) >= ruleGroupFromDate))
                                                    ||
                                                    ((Utility.ToMildiDateTime(x.FromDate) >= ruleGroupFromDate && Utility.ToMildiDateTime(x.FromDate) <= ruleGroupToDate))
                                                    ).ToList();
                            if (confilictList != null && confilictList.Count > 0)
                            {
                                Range range = new Range()
                                {
                                    From = ruleGroupFromDate, To = ruleGroupToDate, AditionalField = 0
                                };
                                var confilictRanges = from o in confilictList
                                                      select new Range()
                                {
                                    From = Utility.ToMildiDateTime(o.FromDate), To = Utility.ToMildiDateTime(o.ToDate), AditionalField = o.RuleCategory.ID
                                };
                                IList <Range> breakedList = Utility.Differance(confilictRanges.ToList(), range);

                                #region Delete
                                //foreach (PersonRuleCatAssignment asgn in ruleAssgnList)
                                //{
                                //    ruleAsgnBus.SaveChanges(asgn, UIActionType.DELETE);
                                //}
                                foreach (PersonRuleCatAssignment asgn in confilictList)
                                {
                                    ruleAsgnBus.SaveChanges(asgn, UIActionType.DELETE);
                                }
                                #endregion

                                #region add first
                                ruleAssign.FromDate     = Utility.ToString(ruleGroupFromDate);
                                ruleAssign.ToDate       = Utility.ToString(ruleGroupToDate);
                                ruleAssign.Person       = prs;
                                ruleAssign.RuleCategory = new RuleCategory()
                                {
                                    ID = infoProxy.RuleGroupID
                                };
                                busRule.InsertWithoutTransaction(ruleAssign);
                                #endregion

                                #region add breaked List
                                foreach (Range r in breakedList)
                                {
                                    if (r.From == range.To)
                                    {
                                        r.From = r.From.AddDays(1);
                                    }
                                    if (r.To == range.From)
                                    {
                                        r.To = r.To.AddDays(-1);
                                    }
                                    ruleAssign              = new PersonRuleCatAssignment();
                                    ruleAssign.FromDate     = Utility.ToString(r.From);
                                    ruleAssign.ToDate       = Utility.ToString(r.To);
                                    ruleAssign.Person       = prs;
                                    ruleAssign.RuleCategory = new RuleCategory()
                                    {
                                        ID = r.AditionalField
                                    };
                                    busRule.InsertWithoutTransaction(ruleAssign);
                                }
                                #endregion
                            }
                            else
                            {
                                ruleAssign.FromDate     = Utility.ToString(ruleGroupFromDate);
                                ruleAssign.ToDate       = Utility.ToString(ruleGroupToDate);
                                ruleAssign.Person       = prs;
                                ruleAssign.RuleCategory = new RuleCategory()
                                {
                                    ID = infoProxy.RuleGroupID
                                };
                                busRule.InsertWithoutTransaction(ruleAssign);
                            }
                            if (minDate > ruleGroupFromDate)
                            {
                                minDate = ruleGroupFromDate;
                            }
                        }
                        #endregion
                        #region Contract
                        if (infoProxy.ContractID > 0)
                        {
                            cfpUpdateRequierd = true;
                            PersonContractAssignment contractAssign = new PersonContractAssignment();
                            contractAssign.Person   = prs;
                            contractAssign.Contract = new Contract()
                            {
                                ID = infoProxy.ContractID
                            };
                            contractAssign.FromDate = contractFromDate;
                            contractAssign.ToDate   = contractToDate;
                            BPersonContractAssignment contractAsgnBus = new BPersonContractAssignment();
                            contractAssgnList = contractAsgnBus.GetAll(prs.ID);
                            PersonContractAssignment PersonContractAssignmentAlias = null;
                            Person PersonAlias = null;
                            IList <PersonContractAssignment> personContractAssignmentList = NHSession.QueryOver <PersonContractAssignment>(() => PersonContractAssignmentAlias)
                                                                                            .JoinAlias(() => PersonContractAssignmentAlias.Person, () => PersonAlias)
                                                                                            .Where(() => !PersonContractAssignmentAlias.IsDeleted &&
                                                                                                   PersonAlias.ID == prs.ID
                                                                                                   )
                                                                                            .List <PersonContractAssignment>();
                            if (personContractAssignmentList != null && personContractAssignmentList.Count > 0)
                            {
                                personContractAssignmentList.ToList()
                                .ForEach(x =>
                                {
                                    if (x.ToDate == Utility.GTSMinStandardDateTime)
                                    {
                                        x.ToDate = DateTime.MaxValue.Date;
                                    }
                                }
                                         );
                            }

                            if (contractAssign.ToDate == Utility.GTSMinStandardDateTime)
                            {
                                contractAssign.ToDate = DateTime.MaxValue.Date;
                            }
                            if (contractAsgnBus.CheckPersonContractAssignmentConfilct(personContractAssignmentList.ToList(), contractAssign))
                            {
                                errorList.Add(new ChangeInfoErrorProxy()
                                {
                                    ErrorMessage = "تاریخ انتساب قرارداد با تاریخ های قبلی همپوشانی دارد", PersonCode = prs.PersonCode, PersonName = prs.Name
                                });
                            }
                            else
                            {
                                if (prs != null && prs.ID != 0 && contractAssign.FromDate < prs.EmploymentDate)
                                {
                                    errorList.Add(new ChangeInfoErrorProxy()
                                    {
                                        ErrorMessage = "تاریخ انتساب ابتدای قرارداد نباید از تاریخ استخدام کوچکتر باشد", PersonCode = prs.PersonCode, PersonName = prs.Name
                                    });
                                }
                                else
                                {
                                    if (contractAssign.ToDate == DateTime.MaxValue.Date)
                                    {
                                        contractAssign.ToDate = Utility.GTSMinStandardDateTime;
                                    }
                                    busAssignContract.InsertWithoutTransaction(contractAssign);
                                    if (minDate > contractFromDate)
                                    {
                                        minDate = contractFromDate;
                                    }
                                }
                            }
                        }
                        #endregion

                        #region Date Range
                        if (infoProxy.DateRangeID > 0)
                        {
                            cfpUpdateRequierd = true;
                            PersonRangeAssignment prsRangeAssignment = new PersonRangeAssignment();
                            rangeAssgnList     = new BAssignDateRange(BLanguage.CurrentSystemLanguage).GetAll(prs.ID);
                            prsRangeAssignment = rangeAssgnList.Where(x => x.FromDate == DateRangeFromDate).FirstOrDefault();
                            if (prsRangeAssignment != null)
                            {
                                prsRangeAssignment.FromDate           = DateRangeFromDate;
                                prsRangeAssignment.CalcDateRangeGroup = new CalculationRangeGroup()
                                {
                                    ID = infoProxy.DateRangeID
                                };
                            }
                            else
                            {
                                prsRangeAssignment                    = new PersonRangeAssignment();
                                prsRangeAssignment.Person             = prs;
                                prsRangeAssignment.FromDate           = DateRangeFromDate;
                                prsRangeAssignment.CalcDateRangeGroup = new CalculationRangeGroup()
                                {
                                    ID = infoProxy.DateRangeID
                                };
                            }
                            bussDateRange.InsertWithoutTransaction(prsRangeAssignment);

                            if (minDate > DateRangeFromDate)
                            {
                                minDate = DateRangeFromDate;
                            }
                        }
                        #endregion

                        #region Work Group
                        if (infoProxy.WorkGroupID > 0)
                        {
                            cfpUpdateRequierd = true;
                            AssignWorkGroup prsWorkGroupAssignment = new AssignWorkGroup();
                            workGroupAssgnList     = new BAssignWorkGroup(BLanguage.CurrentSystemLanguage).GetAll(prs.ID);
                            prsWorkGroupAssignment = workGroupAssgnList.Where(x => x.FromDate == workGroupFromDate).FirstOrDefault();

                            if (prsWorkGroupAssignment != null)
                            {
                                prsWorkGroupAssignment.Person    = prs;
                                prsWorkGroupAssignment.FromDate  = workGroupFromDate;
                                prsWorkGroupAssignment.WorkGroup = new WorkGroup()
                                {
                                    ID = infoProxy.WorkGroupID
                                };
                            }
                            else
                            {
                                prsWorkGroupAssignment           = new AssignWorkGroup();
                                prsWorkGroupAssignment.Person    = prs;
                                prsWorkGroupAssignment.FromDate  = workGroupFromDate;
                                prsWorkGroupAssignment.WorkGroup = new WorkGroup()
                                {
                                    ID = infoProxy.WorkGroupID
                                };
                            }
                            busWorkGroup.InsertWithoutTransaction(prsWorkGroupAssignment);
                            if (minDate > workGroupFromDate)
                            {
                                minDate = workGroupFromDate;
                            }
                        }
                        #endregion
                    }
                    if (infoProxy.DepartmentID > 0)
                    {
                        IList <decimal> FlowIDs = organizationFeatureList.Select(x => x.FlowId).Distinct().ToList <decimal>();
                        if (FlowIDs.Count != 0)
                        {
                            IList <UnderManagment> UnderManagmentList = underMngRep.GetAllPersonelparticularFlows(FlowIDs);
                            foreach (decimal flowid in FlowIDs)
                            {
                                IList <decimal> PersonIds = flowPersonList.Where(x => x.FlowId == flowid &&
                                                                                 !UnderManagmentList.Where(y => y.Flow.ID == flowid).Select(y => y.Person.ID).ToList <decimal>().Contains(x.PersonId)
                                                                                 ).Select(x => x.PersonId).ToList <decimal>();
                                if (PersonIds.Count != 0)
                                {
                                    underMngRep.DeleteUnderManagmentPersonsWithOrganicInfo(flowid, PersonIds);
                                }
                            }
                        }
                        IList <decimal> NewDepertmentFlowsList = underMngRep.GetDepartmentFlows(personList[0].Department.ID);
                        if (NewDepertmentFlowsList.Count != 0)
                        {
                            underMngRep.InsertUnderManagmentPersons(personIdList, NewDepertmentFlowsList);
                        }

                        BRequestSubstitute rSubstitute = new BRequestSubstitute();
                        if (PersonnelsDepartmentChange.Count != 0)
                        {
                            rSubstitute.UpdateRequestSubstituteOfOrganicInfo(PersonnelsDepartmentChange);
                        }
                    }
                    if (cfpUpdateRequierd)
                    {
                        this.UpdateCFP(personList, minDate);
                    }

                    NHibernateSessionManager.Instance.CommitTransactionOn();
                }
                catch (Exception ex)
                {
                    BaseBusiness <Entity> .LogException(ex, "BChangeOrganicInfo", "ChangeInfo");

                    NHibernateSessionManager.Instance.RollbackTransactionOn();
                    throw ex;
                }
            }


            return(true);
        }
Ejemplo n.º 12
0
        private bool ChangeInfo(IList <Person> personList, OrganicInfoProxy infoProxy, out IList <ChangeInfoErrorProxy> errorList)
        {
            IList <PersonRuleCatAssignment> ruleAssgnList      = new List <PersonRuleCatAssignment>();
            IList <PersonRangeAssignment>   rangeAssgnList     = new List <PersonRangeAssignment>();
            IList <AssignWorkGroup>         workGroupAssgnList = new List <AssignWorkGroup>();



            #region Validate
            DateTime workGroupFromDate, ruleGroupFromDate, ruleGroupToDate, DateRangeFromDate;
            if (BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
            {
                workGroupFromDate = Utility.ToMildiDate(infoProxy.WorkGroupFromDate);
                ruleGroupFromDate = Utility.ToMildiDate(infoProxy.RuleGroupFromDate);
                ruleGroupToDate   = Utility.ToMildiDate(infoProxy.RuleGroupToDate);
                DateRangeFromDate = Utility.ToMildiDate(infoProxy.DateRangeFromDate);
            }
            else
            {
                workGroupFromDate = Utility.ToMildiDateTime(infoProxy.WorkGroupFromDate);
                ruleGroupFromDate = Utility.ToMildiDateTime(infoProxy.RuleGroupFromDate);
                ruleGroupToDate   = Utility.ToMildiDateTime(infoProxy.RuleGroupToDate);
                DateRangeFromDate = Utility.ToMildiDateTime(infoProxy.DateRangeFromDate);
            }


            errorList = new List <ChangeInfoErrorProxy>();
            foreach (Person prs in personList)
            {
                string errorMessage = "";
                if (infoProxy.WorkGroupID > 0)
                {
                    workGroupAssgnList = new BAssignWorkGroup(BLanguage.CurrentSystemLanguage).GetAllByWorkGroupId(infoProxy.WorkGroupID);
                    ValidateWorkGroupAssignment(prs, workGroupFromDate, ref errorMessage);
                }
                if (infoProxy.RuleGroupID > 0)
                {
                    ruleAssgnList = new BAssignRule(BLanguage.CurrentSystemLanguage).GetAllByRuleGroupId(infoProxy.RuleGroupID);
                    ValidateRuleGroupAssignment(prs, ruleGroupFromDate, ruleGroupToDate, ref errorMessage);
                }
                if (infoProxy.DateRangeID > 0)
                {
                    rangeAssgnList = new BAssignDateRange(BLanguage.CurrentSystemLanguage).GetAllByRangeId(infoProxy.DateRangeID);
                    ValidateDateRangeAssignment(prs, DateRangeFromDate, ref errorMessage);
                }
                if (!Utility.IsEmpty(errorMessage))
                {
                    errorList.Add(new ChangeInfoErrorProxy()
                    {
                        ErrorMessage = errorMessage, PersonCode = prs.PersonCode, PersonName = prs.Name
                    });
                    if (errorList.Count > 50)
                    {
                        break;
                    }
                }
            }
            if (errorList.Count > 0)
            {
                return(false);
            }
            #endregion

            using (NHibernateSessionManager.Instance.BeginTransactionOn())
            {
                try
                {
                    bool     cfpUpdateRequierd = false;
                    DateTime minDate           = DateTime.Now;
                    int      counter           = 0;
                    foreach (Person prs in personList)
                    {
                        counter++;
                        bool updatePrs = false;

                        #region Department
                        if (infoProxy.DepartmentID > 0)
                        {
                            prs.Department = new GTS.Clock.Model.Charts.Department()
                            {
                                ID = infoProxy.DepartmentID
                            };
                            updatePrs = true;
                        }
                        #endregion

                        #region Employment Type
                        if (infoProxy.EmploymentTypeID > 0)
                        {
                            prs.EmploymentType = new GTS.Clock.Model.BaseInformation.EmploymentType()
                            {
                                ID = infoProxy.EmploymentTypeID
                            };
                            updatePrs = true;
                        }
                        #endregion

                        if (updatePrs)
                        {
                            prsRepository.WithoutTransactUpdate(prs);
                        }

                        #region Rule Category
                        if (infoProxy.RuleGroupID > 0)
                        {
                            cfpUpdateRequierd = true;
                            PersonRuleCatAssignment ruleAssign  = new PersonRuleCatAssignment();
                            BAssignRule             ruleAsgnBus = new BAssignRule();
                            ruleAssgnList = ruleAsgnBus.GetAll(prs.ID);
                            IList <PersonRuleCatAssignment> confilictList =
                                ruleAssgnList.Where(x => ((Utility.ToMildiDateTime(x.FromDate) <= ruleGroupToDate && Utility.ToMildiDateTime(x.ToDate) >= ruleGroupToDate))
                                                    ||
                                                    ((Utility.ToMildiDateTime(x.FromDate) <= ruleGroupFromDate && Utility.ToMildiDateTime(x.ToDate) >= ruleGroupFromDate))
                                                    ||
                                                    ((Utility.ToMildiDateTime(x.FromDate) >= ruleGroupFromDate && Utility.ToMildiDateTime(x.FromDate) <= ruleGroupToDate))
                                                    ).ToList();
                            if (confilictList != null && confilictList.Count > 0)
                            {
                                Range range = new Range()
                                {
                                    From = ruleGroupFromDate, To = ruleGroupToDate, AditionalField = 0
                                };
                                var confilictRanges = from o in confilictList
                                                      select new Range()
                                {
                                    From = Utility.ToMildiDateTime(o.FromDate), To = Utility.ToMildiDateTime(o.ToDate), AditionalField = o.RuleCategory.ID
                                };
                                IList <Range> breakedList = Utility.Differance(confilictRanges.ToList(), range);

                                #region Delete
                                foreach (PersonRuleCatAssignment asgn in ruleAssgnList)
                                {
                                    ruleAsgnBus.SaveChanges(asgn, UIActionType.DELETE);
                                }
                                #endregion

                                #region add first
                                ruleAssign.FromDate     = Utility.ToString(ruleGroupFromDate);
                                ruleAssign.ToDate       = Utility.ToString(ruleGroupToDate);
                                ruleAssign.Person       = prs;
                                ruleAssign.RuleCategory = new RuleCategory()
                                {
                                    ID = infoProxy.RuleGroupID
                                };
                                busRule.InsertWithoutTransaction(ruleAssign);
                                #endregion

                                #region add breaked List
                                foreach (Range r in breakedList)
                                {
                                    if (r.From == range.To)
                                    {
                                        r.From = r.From.AddDays(1);
                                    }
                                    if (r.To == range.From)
                                    {
                                        r.To = r.To.AddDays(-1);
                                    }
                                    ruleAssign              = new PersonRuleCatAssignment();
                                    ruleAssign.FromDate     = Utility.ToString(r.From);
                                    ruleAssign.ToDate       = Utility.ToString(r.To);
                                    ruleAssign.Person       = prs;
                                    ruleAssign.RuleCategory = new RuleCategory()
                                    {
                                        ID = r.AditionalField
                                    };
                                    busRule.InsertWithoutTransaction(ruleAssign);
                                }
                                #endregion
                            }
                            else
                            {
                                ruleAssign.FromDate     = Utility.ToString(ruleGroupFromDate);
                                ruleAssign.ToDate       = Utility.ToString(ruleGroupToDate);
                                ruleAssign.Person       = prs;
                                ruleAssign.RuleCategory = new RuleCategory()
                                {
                                    ID = infoProxy.RuleGroupID
                                };
                                busRule.InsertWithoutTransaction(ruleAssign);
                            }
                            if (minDate > ruleGroupFromDate)
                            {
                                minDate = ruleGroupFromDate;
                            }
                        }
                        #endregion

                        #region Date Range
                        if (infoProxy.DateRangeID > 0)
                        {
                            cfpUpdateRequierd = true;
                            PersonRangeAssignment prsRangeAssignment = new PersonRangeAssignment();
                            rangeAssgnList     = new BAssignDateRange(BLanguage.CurrentSystemLanguage).GetAll(prs.ID);
                            prsRangeAssignment = rangeAssgnList.Where(x => x.FromDate == DateRangeFromDate).FirstOrDefault();
                            if (prsRangeAssignment != null)
                            {
                                prsRangeAssignment.FromDate           = DateRangeFromDate;
                                prsRangeAssignment.CalcDateRangeGroup = new CalculationRangeGroup()
                                {
                                    ID = infoProxy.DateRangeID
                                };
                            }
                            else
                            {
                                prsRangeAssignment                    = new PersonRangeAssignment();
                                prsRangeAssignment.Person             = prs;
                                prsRangeAssignment.FromDate           = DateRangeFromDate;
                                prsRangeAssignment.CalcDateRangeGroup = new CalculationRangeGroup()
                                {
                                    ID = infoProxy.DateRangeID
                                };
                            }
                            bussDateRange.InsertWithoutTransaction(prsRangeAssignment);

                            if (minDate > DateRangeFromDate)
                            {
                                minDate = DateRangeFromDate;
                            }
                        }
                        #endregion

                        #region Work Group
                        if (infoProxy.WorkGroupID > 0)
                        {
                            cfpUpdateRequierd = true;
                            AssignWorkGroup prsWorkGroupAssignment = new AssignWorkGroup();
                            workGroupAssgnList     = new BAssignWorkGroup(BLanguage.CurrentSystemLanguage).GetAll(prs.ID);
                            prsWorkGroupAssignment = workGroupAssgnList.Where(x => x.FromDate == workGroupFromDate).FirstOrDefault();

                            if (prsWorkGroupAssignment != null)
                            {
                                prsWorkGroupAssignment.Person    = prs;
                                prsWorkGroupAssignment.FromDate  = workGroupFromDate;
                                prsWorkGroupAssignment.WorkGroup = new WorkGroup()
                                {
                                    ID = infoProxy.WorkGroupID
                                };
                            }
                            else
                            {
                                prsWorkGroupAssignment           = new AssignWorkGroup();
                                prsWorkGroupAssignment.Person    = prs;
                                prsWorkGroupAssignment.FromDate  = workGroupFromDate;
                                prsWorkGroupAssignment.WorkGroup = new WorkGroup()
                                {
                                    ID = infoProxy.WorkGroupID
                                };
                            }
                            busWorkGroup.InsertWithoutTransaction(prsWorkGroupAssignment);
                            if (minDate > workGroupFromDate)
                            {
                                minDate = workGroupFromDate;
                            }
                        }
                        #endregion
                    }
                    if (cfpUpdateRequierd)
                    {
                        this.UpdateCFP(personList, minDate);
                    }

                    NHibernateSessionManager.Instance.CommitTransactionOn();
                }
                catch (Exception ex)
                {
                    BaseBusiness <Entity> .LogException(ex, "BChangeOrganicInfo", "ChangeInfo");

                    NHibernateSessionManager.Instance.RollbackTransactionOn();
                    throw ex;
                }
            }


            return(true);
        }