Exemplo n.º 1
0
        public void Start(Calculation calculation)
        {
            Task.Factory.StartNew(() =>
            {
                publisher.RegisterHandler(new JobIndexPointPersister());
                using (var transaction = new TransactionScope())
                    using (var reuow = new NHUnitOfWork(RuleEngineSession.GetSession()))
                        using (var uow = new NHUnitOfWork(PMSSession.GetSession()))
                        {
                            var empRep    = new EmployeeRepository(uow);
                            var rebps     = new RuleBasedPolicyEngineService(new LocatorProvider("PMSDb"), publisher);
                            var policyRep = new MITD.PMS.Persistence.NH.PolicyRepository(uow,
                                                                                         new PolicyConfigurator(rebps));
                            var policy    = policyRep.GetById(calculation.PolicyId);
                            var periodRep = new PeriodRepository(uow);
                            var period    = periodRep.GetById(calculation.PeriodId);

                            var jiRep  = new JobIndexRepository(uow);
                            var jpRep  = new JobPositionRepository(uow);
                            var jipRep = new JobIndexPointRepository(uow);
                            var ji     = jiRep.GetAllJobIndex(period.Id).First();
                            var jp     = jpRep.GetJobPositions(period.Id).First();

                            var en = calculation.EmployeeIdList.Select(i => i.EmployeeNo).ToList();
                            IList <Employee> employees = empRep.Find(e => en.Contains(e.Id.EmployeeNo) && e.Id.PeriodId == calculation.PeriodId);
                            foreach (var employee in employees)
                            {
                                if (doStop)
                                {
                                    break;
                                }
                                //var indices = policy.CalculateFor(DateTime.Now, employee, period,calculation,
                                //    new CalculationDataProvider(empRep),publisher, );
                                //publisher.Publish(new JobIndexPointsReady(indices));
                            }

                            reuow.Commit();
                            uow.Commit();
                            transaction.Complete();
                        }
            });
        }
Exemplo n.º 2
0
        public static void CreateJobIndexPointWithValuesFromMatrix(KeyValuePair <JobPosition, Dictionary <string, List <string> > > jobPositionWithValue,
                                                                   JobRepository jobRep, JobIndexRepository jobIndexRep, InquiryJobIndexPointRepository inquiryRep, JobPositionRepository jobPositionRepository)
        {
            var jobPosition = jobPositionRepository.GetBy(jobPositionWithValue.Key.Id);

            foreach (var itm in jobPosition.ConfigurationItemList)
            {
                var job = jobRep.GetById(itm.JobPosition.JobId);
                foreach (var jobIndexId in job.JobIndexList)
                {
                    var jobIndex = (JobIndex)jobIndexRep.GetById(jobIndexId.JobIndexId);
                    PMSMigrationUtility.CreateJobIndexIndexPointWithValue(inquiryRep, jobIndex, itm,
                                                                          jobPositionWithValue.Value[jobIndex.DictionaryName]);
                }
            }
        }