Exemple #1
0
        public void JobPositionInPeriodTest()
        {
            Period      period;
            JobPosition jobPosition;

            using (var session = PMSAdminSession.GetSession())
                using (session.BeginTransaction())
                {
                    jobPosition = session.Query <JobPosition>().FirstOrDefault();
                    session.Transaction.Commit();
                }
            using (var session = PMSSession.GetSession())
                using (session.BeginTransaction())
                {
                    period = session.Query <Period>().FirstOrDefault();
                    var unitInPeriod      = session.Query <Unit>().FirstOrDefault();
                    var jobInPeriod       = session.Query <Job>().FirstOrDefault();
                    var sharedJobPosition = new SharedJobPosition(new SharedJobPositionId(jobPosition.Id.Id),
                                                                  jobPosition.Name,
                                                                  jobPosition.DictionaryName);

                    var jobPositionInPeriod = new MITD.PMS.Domain.Model.JobPositions.JobPosition(period, sharedJobPosition,
                                                                                                 null,
                                                                                                 jobInPeriod, unitInPeriod);
                    session.Save(jobPositionInPeriod);

                    session.Transaction.Commit();
                }
        }
Exemple #2
0
        private static void RegisterDataAccess(WindsorContainer container)
        {
            container.Register(Component.For <IConnectionProvider>()
                               .UsingFactoryMethod(c => new ConnectionProvider(() =>
            {
                var s = System.Configuration.ConfigurationManager.
                        ConnectionStrings["PMSDBConnection"].ConnectionString;
                var res = new SqlConnection(s);
                res.Open();
                return(res);
            })).LifestyleBoundTo <IService>());

            DataAccessConfigHelper.ConfigureContainer <CustomFieldRepository>(container,
                                                                              () =>
            {
                var session = PMSAdminSession.GetSession(container.Resolve <IConnectionProvider>().GetConnection());
                return(session);
            }, "PMSAdmin");

            DataAccessConfigHelper.ConfigureContainer <PeriodRepository>(container,
                                                                         () =>
            {
                var session = PMSSession.GetSession(container.Resolve <IConnectionProvider>().GetConnection());
                return(session);
            }, "PMS");

            DataAccessConfigHelper.ConfigureContainer <RuleRepository>(container,
                                                                       () =>
            {
                var session = RuleEngineSession.GetSession(container.Resolve <IConnectionProvider>().GetConnection());
                return(session);
            }, "RuleEngine");
        }
Exemple #3
0
 public static jobPms.SharedJob AddJob(string jobName, string jobDicName)
 {
     using (var session = PMSAdminSession.GetSession())
         using (session.BeginTransaction())
         {
             long jobSeqId = GetJobSequence(session);
             var  job      = new JobPmsAdmin.Job(new JobPmsAdmin.JobId(jobSeqId), jobName, jobDicName);
             session.Save(job);
             session.Transaction.Commit();
             return(new jobPms.SharedJob(new jobPms.SharedJobId(job.Id.Id), job.Name, job.DictionaryName));
         }
 }
Exemple #4
0
 private SharedUnit GetSharedUnit()
 {
     pmsAdminModel.Units.Unit unit;
     using (var session = PMSAdminSession.GetSession())
         using (session.BeginTransaction())
         {
             var unitRep = new UnitRepository(new NHUnitOfWork(session));
             var id      = unitRep.GetNextId();
             unit = new PMSAdmin.Domain.Model.Units.Unit(id, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
             session.Save(unit);
             session.Transaction.Commit();
         }
     return(new SharedUnit(new SharedUnitId(unit.Id.Id), unit.Name, unit.DictionaryName));
 }
Exemple #5
0
 private SharedJob GetSharedJob()
 {
     pmsAdminModel.Jobs.Job job;
     using (var session = PMSAdminSession.GetSession())
         using (session.BeginTransaction())
         {
             var jobRep = new PMSAdmin.Persistence.NH.JobRepository(new NHUnitOfWork(session));
             var id     = jobRep.GetNextId();
             job = new PMSAdmin.Domain.Model.Jobs.Job(id, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
             session.Save(job);
             session.Transaction.Commit();
         }
     return(new SharedJob(new SharedJobId(job.Id.Id), job.Name, job.DictionaryName));
 }
Exemple #6
0
 private SharedJobIndex getSharedJobIndex()
 {
     pmsAdminModel.JobIndices.JobIndex jobIndex;
     using (var session = PMSAdminSession.GetSession())
         using (session.BeginTransaction())
         {
             var jobIndexRep = new PMSAdmin.Persistence.NH.JobIndexRepository(new NHUnitOfWork(session));
             var id          = jobIndexRep.GetNextId();
             jobIndex = new PMSAdmin.Domain.Model.JobIndices.JobIndex(id,
                                                                      jobIndexRep.GetJobIndexCategory(new PMSAdmin.Domain.Model.JobIndices.AbstractJobIndexId(1)),
                                                                      Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
             session.Save(jobIndex);
             session.Transaction.Commit();
         }
     return(new SharedJobIndex(new SharedJobIndexId(jobIndex.Id.Id), jobIndex.Name, jobIndex.DictionaryName));
 }
Exemple #7
0
 public void AssignJobPositionToEmployee()
 {
     using (var session = PMSSession.GetSession())
         using (session.BeginTransaction())
         {
             var period   = session.Query <Period>().First();
             var employee = new Employee(Guid.NewGuid().ToString(), period,
                                         Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
             SharedEmployeeCustomField sharedEmployeeCustomField;
             JobCustomField            sharedJobCustomField;
             using (var adminSession = PMSAdminSession.GetSession())
                 using (adminSession.BeginTransaction())
                 {
                     var employeeCustomFielType = adminSession.Query <CustomFieldType>().First();
                     sharedEmployeeCustomField =
                         new SharedEmployeeCustomField(new SharedEmployeeCustomFieldId(employeeCustomFielType.Id.Id),
                                                       Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, 1);
                     //sharedJobCustomField =
                     //    new JobCustomField(new JobCustomFieldId(employeeCustomFielType.Id.Id),
                     //        Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, 1);
                 }
             employee.AssignCustomFieldAndValue(sharedEmployeeCustomField, "30");
             var jobposition = session.Query <JobPosition>().FirstOrDefault();
             //employee.AssignJobPosition(jobposition, DateTime.Now.Date, DateTime.Now.Date,
             //    new Dictionary<JobCustomField, string> {{sharedJobCustomField, "10"}});
             session.Save(employee);
             session.Transaction.Commit();
             using (session.BeginTransaction())
             {
                 var newEmployee =
                     session.Query <Employee>()
                     .FirstOrDefault(
                         e => e.Id.EmployeeNo == employee.Id.EmployeeNo && e.Id.PeriodId == employee.Id.PeriodId);
                 //newEmployee.AssignJobPositions(null, );
                 session.Update(newEmployee);
                 session.Transaction.Commit();
             }
         }
 }
Exemple #8
0
 public void AddUpdateEmployeeTest()
 {
     using (var session = PMSSession.GetSession())
         using (session.BeginTransaction())
         {
             var period   = session.Query <Period>().First();
             var employee = new Employee(Guid.NewGuid().ToString(), period,
                                         Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
             SharedEmployeeCustomField sharedEmployeeCustomField;
             using (var adminSession = PMSAdminSession.GetSession())
                 using (adminSession.BeginTransaction())
                 {
                     var employeeCustomFielType = adminSession.Query <CustomFieldType>().First();
                     sharedEmployeeCustomField =
                         new SharedEmployeeCustomField(new SharedEmployeeCustomFieldId(employeeCustomFielType.Id.Id),
                                                       Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, 1);
                 }
             employee.AssignCustomFieldAndValue(sharedEmployeeCustomField, "30");
             session.Save(employee);
             session.Transaction.Commit();
             using (session.BeginTransaction())
             {
                 var rep = new EmployeeRepository(new NHUnitOfWork(session));
                 var fs  = new ListFetchStrategy <Employee>(Enums.FetchInUnitOfWorkOption.NoTracking);
                 fs.WithPaging(10, 1);
                 fs.OrderBy(c => c.Id);
                 rep.Find(e => e.Id.PeriodId == new PeriodId(1), fs);
                 var newEmployee =
                     session.Query <Employee>()
                     .FirstOrDefault(
                         e => e.Id.EmployeeNo == employee.Id.EmployeeNo && e.Id.PeriodId == employee.Id.PeriodId);
                 newEmployee.Update("ehsan", "mohammadi");
                 session.Update(newEmployee);
                 session.Transaction.Commit();
             }
         }
 }
Exemple #9
0
        public void JobIndexPointTest()
        {
            PMSAdmin.Domain.Model.JobIndices.JobIndex      jobIndex;
            PMSAdmin.Domain.Model.JobPositions.JobPosition jobPosition;
            PMSAdmin.Domain.Model.Jobs.Job   job;
            PMSAdmin.Domain.Model.Units.Unit unit;
            RuleEngineBasedPolicy            policy;
            long x = 190;

            using (var tr = new TransactionScope())
                using (var adminSession = PMSAdminSession.GetSession())
                {
                    policy = new RuleEngineBasedPolicy(new PolicyId(x), Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    adminSession.Save(policy);
                    var jobIndexCategory = new PMSAdmin.Domain.Model.JobIndices.JobIndexCategory(
                        new PMSAdmin.Domain.Model.JobIndices.AbstractJobIndexId(x + 1), null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    adminSession.Save(jobIndexCategory);
                    jobIndex = new PMSAdmin.Domain.Model.JobIndices.JobIndex(
                        new PMSAdmin.Domain.Model.JobIndices.AbstractJobIndexId(x + 2), jobIndexCategory, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    adminSession.Save(jobIndex);

                    unit = new PMSAdmin.Domain.Model.Units.Unit(new PMSAdmin.Domain.Model.Units.UnitId(x + 3), Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    adminSession.Save(unit);
                    job = new PMSAdmin.Domain.Model.Jobs.Job(new PMSAdmin.Domain.Model.Jobs.JobId(x + 4), Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    adminSession.Save(job);
                    jobPosition = new JobPosition(new PMSAdmin.Domain.Model.JobPositions.JobPositionId(x + 5)
                                                  , Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    adminSession.Save(jobPosition);

                    adminSession.Flush();
                    tr.Complete();
                }

            long     y = x - 4;
            Employee emp;

            using (var tr = new TransactionScope())
                using (var session = PMSSession.GetSession())
                {
                    var policy2 = session.Get <MITD.PMS.Domain.Model.Policies.RuleEngineBasedPolicy>(
                        new MITD.PMS.Domain.Model.Policies.PolicyId(policy.Id.Id));
                    var period = new Period(new PeriodId(y), Guid.NewGuid().ToString(), DateTime.Now, DateTime.Now, 91);

                    //period.Activate(null);
                    session.Save(period);
                    emp = new Employee(Guid.NewGuid().ToString(), period, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    session.Save(emp);
                    var calc = new Calculation(new CalculationId(y), period, policy2, Guid.NewGuid().ToString(), DateTime.Now, "1");
                    session.Save(calc);
                    var jobIndexGroup = new JobIndexGroup(new AbstractJobIndexId(y), period, null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    session.Save(jobIndexGroup);
                    var ji = new JobIndex(new AbstractJobIndexId(y + 1), period, new SharedJobIndex(
                                              new SharedJobIndexId(jobIndex.Id.Id), jobIndex.Name, jobIndex.DictionaryName), jobIndexGroup, true);
                    session.Save(ji);
                    var j = new Job(period, new SharedJob(new SharedJobId(job.Id.Id), job.Name, job.DictionaryName));
                    session.Save(j);
                    var u = new Unit(period, new SharedUnit(new SharedUnitId(unit.Id.Id), unit.Name, unit.DictionaryName), null);
                    session.Save(u);
                    var jp = new Domain.Model.JobPositions.JobPosition(period, new SharedJobPosition(
                                                                           new SharedJobPositionId(jobPosition.Id.Id), jobPosition.Name, jobPosition.DictionaryName), null, j, u);
                    session.Save(jp);
                    EmployeePoint p = new JobIndexPoint(new CalculationPointId(y), period, emp, calc, jp, ji, "hh", 10);
                    session.Save(p);
                    p = new SummaryEmployeePoint(new CalculationPointId(y + 1), period, emp, calc, "ff", 10);
                    session.Save(p);
                    session.Flush();
                    tr.Complete();
                }
            using (var tr = new TransactionScope())
                using (var session = PMSSession.GetSession())
                {
                    var lst = session.Query <EmployeePoint>().ToList();
                    session.Flush();
                    tr.Complete();
                }
        }
Exemple #10
0
        public void JobIndexInPeriodTest()
        {
            long nextAbsIndexId;
            long jobIndexId;

            using (var session = PMSSession.GetSession())
                using (session.BeginTransaction())
                {
                    var period = session.Query <Period>().FirstOrDefault();

                    nextAbsIndexId =
                        session.CreateSQLQuery("Select next value for dbo.Periods_AbstractJobIndexSeq").UniqueResult <long>();
                    var rootJobIndexCat = new JobIndexGroup(new AbstractJobIndexId(nextAbsIndexId), period, null,
                                                            Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    session.Save((AbstractJobIndex)rootJobIndexCat);

                    SharedJobIndex            sharedJobIndex;
                    SharedJobIndexCustomField sharedJobIndexCustomField;

                    using (var sessionAdmin = PMSAdminSession.GetSession())
                    {
                        var pmsAdminJobIndex =
                            sessionAdmin.Query <MITD.PMSAdmin.Domain.Model.JobIndices.JobIndex>().FirstOrDefault();
                        sharedJobIndex = new SharedJobIndex(new SharedJobIndexId(pmsAdminJobIndex.Id.Id),
                                                            pmsAdminJobIndex.Name, pmsAdminJobIndex.DictionaryName);

                        var customFld = sessionAdmin.Query <CustomFieldType>().SingleOrDefault();
                        sharedJobIndexCustomField =
                            new SharedJobIndexCustomField(new SharedJobIndexCustomFieldId(customFld.Id.Id), customFld.Name,
                                                          customFld.DictionaryName, 1, 100);
                    }

                    nextAbsIndexId =
                        session.CreateSQLQuery("Select next value for dbo.Periods_AbstractJobIndexSeq").UniqueResult <long>();
                    var jobIndex = new JobIndex(new AbstractJobIndexId(nextAbsIndexId), period, sharedJobIndex,
                                                rootJobIndexCat, true);
                    jobIndex.UpdateCustomFields(new Dictionary <SharedJobIndexCustomField, string>()
                    {
                        { sharedJobIndexCustomField, "asdasdasdasd" }
                    });

                    session.Save(jobIndex);
                    session.Transaction.Commit();
                }
            using (var session = PMSSession.GetSession())
                using (session.BeginTransaction())
                {
                    var jobIndex =
                        session.Query <JobIndex>().SingleOrDefault(j => j.Id == new AbstractJobIndexId(nextAbsIndexId));

                    //    var rootJobIndexCat = session.Query<JobIndexCategory>().SingleOrDefault(p => p.Id == new AbstractJobIndexId(nextAbsIndexId));



                    //    nextAbsIndexId = session.CreateSQLQuery("Select next value for dbo.AbstractJobIndexSeq").UniqueResult<long>();
                    //    var jobIndexCat = new JobIndexCategory(new AbstractJobIndexId(nextAbsIndexId), rootJobIndexCat, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    //    session.Save((AbstractJobIndex)jobIndexCat);

                    //    jobIndexId = session.CreateSQLQuery("Select next value for dbo.AbstractJobIndexSeq").UniqueResult<long>();
                    //    var jobIndex = new JobIndex(new AbstractJobIndexId(jobIndexId), jobIndexCat, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    //    session.Save((AbstractJobIndex)jobIndex);

                    //    session.Transaction.Commit();
                }
        }
Exemple #11
0
        public void CalculationTest()
        {
            MITD.PMSAdmin.Domain.Model.Policies.PolicyId policyId;
            var empLst = string.Empty;

            PMSAdmin.Domain.Model.JobIndices.JobIndex sharedji;

            using (var transaction = new TransactionScope())
                using (var puow = new NHUnitOfWork(PMSAdminSession.GetSession()))
                    using (var reuow = new NHUnitOfWork(RuleEngineSession.GetSession()))
                    {
                        var ruleRep     = new RuleRepository(reuow);
                        var rfRep       = new RuleFunctionRepository(reuow);
                        var reConfigRep = new REConfigeRepository(reuow);
                        var rebps       = new RuleBasedPolicyEngineService(new LocatorProvider("PMSDb"), publisher);
                        var policyRep   = new MITD.PMSAdmin.Persistence.NH.PolicyRepository(puow);

                        var rule = new Rule(new RuleId(ruleRep.GetNextId()), Guid.NewGuid().ToString(),
                                            @"
	RuleExecutionUtil.Res.Add( new RuleResult{Value = data.Data});                            
", RuleType.PerCalculation, 1);
                        ruleRep.Add(rule);

                        var policy = new MITD.PMSAdmin.Domain.Model.Policies.RuleEngineBasedPolicy(
                            policyRep.GetNextId(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                        policyId = policy.Id;
                        policyRep.Add(policy);
                        policy.AssignRule(rule);

                        var jirep = new PMSAdmin.Persistence.NH.JobIndexRepository(puow);
                        var ai    = new PMSAdmin.Domain.Model.JobIndices.JobIndexCategory(
                            jirep.GetNextId(), null,
                            Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                        jirep.Add(ai);

                        sharedji = new PMSAdmin.Domain.Model.JobIndices.JobIndex(
                            jirep.GetNextId(), ai,
                            Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                        jirep.Add(sharedji);

                        reuow.Commit();
                        puow.Commit();
                        transaction.Complete();
                    }

            Calculation calc;
            var         puows = new UnitOfWorkScope(new NHUnitOfWorkFactory(() => PMSAdminSession.GetSession()));
            var         uows  = new UnitOfWorkScope(new NHUnitOfWorkFactory(() =>
            {
                var res = PMSSession.GetSession();
                res.SetBatchSize(100);
                return(res);
            }));

            Period period;

            using (var transaction = new TransactionScope())
                using (var puow = puows.CurrentUnitOfWork as NHUnitOfWork)
                    using (var uow = uows.CurrentUnitOfWork as NHUnitOfWork)
                    {
                        var periodRep = new PeriodRepository(uow);
                        period = new Period(new PeriodId(periodRep.GetNextId()), Guid.NewGuid().ToString(), DateTime.Now, DateTime.Now, 91);
                        periodRep.Add(period);


                        var sjiService = new PMS.ACL.PMSAdmin.PMSAdminService(null, null, null, null,
                                                                              new PMSAdmin.Application.JobIndexService(new PMSAdmin.Persistence.NH.JobIndexRepository(puow),
                                                                                                                       new PMSAdmin.Persistence.NH.CustomFieldRepository(puow))
                                                                              ,
                                                                              new PMSAdmin.Application.UnitIndexService(new PMSAdmin.Persistence.NH.UnitIndexRepository(uows),
                                                                                                                        new PMSAdmin.Persistence.NH.CustomFieldRepository(uows)
                                                                                                                        )
                                                                              );
                        var sji = sjiService.GetSharedJobIndex(new PMS.Domain.Model.JobIndices.SharedJobIndexId(sharedji.Id.Id));

                        var jiRep = new PMS.Persistence.NH.JobIndexRepository(uow);
                        var jic   = new PMS.Domain.Model.JobIndices.JobIndexGroup(
                            jiRep.GetNextId(), period, null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                        jiRep.Add(jic);

                        var ji = new PMS.Domain.Model.JobIndices.JobIndex(
                            jiRep.GetNextId(), period, sji, jic, true);
                        jiRep.Add(ji);
                        uow.Commit();
                        transaction.Complete();
                    }

            for (int j = 0; j < 10; j++)
            {
                using (var transaction = new TransactionScope())
                    using (var uow = uows.CurrentUnitOfWork as NHUnitOfWork)
                    {
                        var empRep = new EmployeeRepository(uow);

                        for (int i = 0; i < 500; i++)
                        {
                            var emp = new Employee(Guid.NewGuid().ToString(), period, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                            empLst += emp.Id.EmployeeNo + ";";
                            empRep.Add(emp);
                        }
                        empLst = empLst.Remove(empLst.Length - 1);
                        uow.Commit();
                        transaction.Complete();
                    }
            }

            using (var transaction = new TransactionScope())
                using (var uow = uows.CurrentUnitOfWork as NHUnitOfWork)
                {
                    var rebps     = new RuleBasedPolicyEngineService(new LocatorProvider("PMSDb"), publisher);
                    var calcRep   = new CalculationRepository(uow);
                    var policyRep = new MITD.PMS.Persistence.NH.PolicyRepository(uow,
                                                                                 new PolicyConfigurator(rebps));
                    var policy = policyRep.GetById(new PolicyId(policyId.Id));
                    calc = new Calculation(calcRep.GetNextId(), period, policy,
                                           Guid.NewGuid().ToString(), DateTime.Now, empLst);
                    calcRep.Add(calc);
                    uow.Commit();
                    transaction.Complete();
                }

            //var calculator = new JobIndexPointCalculator(publisher);

            //using (var transaction = new TransactionScope())
            //using (var uow = new NHUnitOfWork(PMSSession.GetSession()))
            //{
            //    var calcRep = new CalculationRepository(uow);
            //    calc = calcRep.GetById(calc.Id);
            //    calc.Run(calculator);
            //    uow.Commit();
            //    transaction.Complete();
            //}

            //var t = Task.Factory.StartNew(() =>
            //    {
            //        Thread.Sleep(1000);
            //        using (var transaction = new TransactionScope())
            //        using (var uow = new NHUnitOfWork(PMSSession.GetSession()))
            //        {
            //            var calcRep = new CalculationRepository(uow);
            //            calc = calcRep.GetById(calc.Id);
            //            calc.Stop(calculator);
            //            uow.Commit();
            //            transaction.Complete();
            //        }
            //    });
            //t.Wait();
        }
Exemple #12
0
        public static void ConfigeLocator()
        {
            var container = new WindsorContainer();

            container.Kernel.ComponentModelBuilder.RemoveContributor(
                container.Kernel.ComponentModelBuilder.Contributors.OfType <PropertiesDependenciesModelInspector>().Single());
            container.Register(
                Component.For <IFacadeService>().Interceptors(InterceptorReference.ForType <Interception>()).Last,
                Component.For <Interception>());

            RegisterDataAccess(container);



            container.Register(
                Classes.FromAssemblyContaining <CalculationMapper>()
                .BasedOn <IMapper>()
                .WithService.FromInterface()
                .LifestyleBoundToNearest <IService>(),
                Classes.FromAssemblyContaining <CalculationServiceFacade>()
                .BasedOn <IFacadeService>()
                .WithService.FromInterface()
                .LifestyleBoundTo <ApiController>(),
                Classes.FromThisAssembly().BasedOn <ApiController>().LifestyleTransient(),
                Classes.FromThisAssembly().BasedOn <Controller>().LifestyleTransient()
                );

            //container.Register(Component.For<IFacadeService>()
            //    .Interceptors(InterceptorReference.ForType<Interception>()).Anywhere,
            //    Component.For<Interception>()
            //    );



            container.Register(
                Component.For <ILoggerService>().ImplementedBy <DbLoggerService>().Named("DB").LifeStyle.BoundTo <IService>(),
                Component.For <ILoggerService>().ImplementedBy <FileLoggerService>().Named("File").LifeStyle.BoundTo <IService>(),
                Component.For <ILoggerService>().ImplementedBy <WindowsEventsLoggerService>().Named("WindowsEvent").LifeStyle.BoundTo <IService>()
                );


            container.Register
            (
                Classes.FromAssemblyContaining <MITD.PMS.Application.JobService>()
                .BasedOn <IService>().If(c => c.Namespace == typeof(MITD.PMS.Application.JobService).Namespace &&
                                         c.Name != typeof(MITD.PMS.Application.CalculatorEngine).Name
                                         &&
                                         c.Name != typeof(MITD.PMS.Application.JobIndexPointCalculator).Name
                                         &&
                                         c.Name != typeof(MITD.PMS.Application.CalculationDataProvider).Name
                                         )
                .WithService.FromInterface()
                .LifestyleBoundToNearest <IService>(),
                Classes.FromAssemblyContaining <FunctionService>()
                .BasedOn <IService>().If(c => c.Namespace == typeof(FunctionService).Namespace)
                .WithService.FromInterface()
                .LifestyleBoundToNearest <IService>(),
                Classes.FromAssemblyContaining <MITD.PMS.Domain.Service.RuleBasedPolicyEngineService>()
                .BasedOn <IService>().OrBasedOn(typeof(IConfigurator))
                .WithService.FromInterface()
                .LifestyleBoundToNearest <IService>(),


                Component.For <IRuleService>().ImplementedBy <RuleEngineService>()
                .LifestyleBoundToNearest <IService>(),
                Component.For <IServiceLocatorProvider>().ImplementedBy <LocatorProvider>()
                .DependsOn(new Hashtable {
                { "connectionName", "PMSDBConnection" }
            })
                .LifeStyle.BoundTo <IService>(),
                Component.For <IEventPublisher>().ImplementedBy <EventPublisher>()
                .LifestyleBoundTo <IService>(),
                Component.For <ISecurityService>().ImplementedBy <SecurityService>()
                .LifestyleBoundToNearest <IService>(),
                Component.For <ISecurityCheckerService>().ImplementedBy <SecurityCheckerService>()
                .LifestyleBoundToNearest <IService>(),
                Component.For <ILogService>().ImplementedBy <LogService>()
                .LifestyleBoundToNearest <IService>(),
                Component.For <ILogManagerService>().ImplementedBy <LogManagerService>()
                .LifestyleBoundToNearest <IService>(),
                Component.For <ILoggerServiceFactory>().ImplementedBy <LoggerServiceFactory>()
                .LifestyleBoundToNearest <IService>()

            );

            container.Register(
                Component.For <IInquiryJobIndexPointCreatorService>()
                .ImplementedBy <InquiryJobIndexPointCreatorService>()
                .LifeStyle.Transient);
            container.Register(
                Component.For <IPMSAdminService>().ImplementedBy <PMSAdminService>().LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IPMSSecurityService>().ImplementedBy <PMSSecurityService>().LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IJobPositionInquiryConfiguratorService>()
                .ImplementedBy <JobPositionInquiryConfiguratorService>()
                .LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IUnitInquiryConfiguratorService>()
                .ImplementedBy <UnitInquiryConfiguratorService>()
                .LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IJobIndexPointCalculatorProvider>()
                .ImplementedBy <JobIndexPointCalculatorProvider>()
                .LifeStyle.Singleton.IsDefault());

            container.Register(
                Component.For <IInquiryConfiguratorService>()
                .ImplementedBy <InquiryConfiguratorService>()
                .LifeStyle.Singleton.IsDefault());


            container.Register(
                Component.For <IPeriodBasicDataCopierService>()
                .ImplementedBy <PeriodBasicDataCopierService>()
                .LifeStyle.Singleton.IsDefault());

            //container.Register(
            //    Component.For<IEmployeePointCopierService>()
            //        .ImplementedBy<EmployeePointCopierService>()
            //        .LifestyleBoundToNearest<IService>());

            container.Register(
                Component.For <ICalculatorEngine>().ImplementedBy <CalculatorEngine>()
                .LifeStyle.Transient);

            container.Register(
                Component.For <ISecurityServiceFacade>().ImplementedBy <SecurityServiceFacade>()
                .LifeStyle.Transient);

            container.Register(
                Component.For(typeof(IServiceLifeCycleManager <>)).ImplementedBy(typeof(ServiceLifeCycleManager <>))
                .LifeStyle.Transient);

            //container.Register(
            //    Component.For<IPeriodServiceFactory>().ImplementedBy<PeriodServiceFactory>()
            //        .LifeStyle.Transient);

            container.Register(
                Component.For <ICalculationDataProvider>().ImplementedBy <CalculationDataProvider>()
                .LifeStyle.Transient);

            container.Register(
                Component.For <IJobIndexPointCalculator>().ImplementedBy <JobIndexPointCalculator>().LifeStyle.Transient);

            //container.Register(
            //    Component.For<Castle.DynamicProxy.IInterceptor>().ImplementedBy<Interception>().LifestyleBoundTo<IService>());

            container.Register(
                Component.For <IUserManagementService>().ImplementedBy <UserManagementService>().LifeStyle.Singleton);

            container.Register(
                Component.For <ICalculationEngineService>().ImplementedBy <CalculationEngineService>().LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IPeriodEngineService>().ImplementedBy <PeriodEngineService>().LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IFaultExceptionAdapter>().ImplementedBy <CalculationFaultExceptionAdapter>().LifeStyle.Singleton);

            container.Register(
                Component.For <AccessPermission>().LifeStyle.Singleton);

            container.Register(
                Component.For <IEmailManager>().ImplementedBy <EmailManager>().LifeStyle.Singleton);


            var locator = new WindsorServiceLocator(container);

            ServiceLocator.SetLocatorProvider(() => locator);


            //var accessPermissionSetup=new AccessPermissionSetup();
            //accessPermissionSetup.Execute(ServiceLocator.Current.GetInstance<AccessPermission>(),
            //    container.Kernel.GetAssignableHandlers(typeof (IFacadeService)).Count());



            NHibernateInnerJoinSupport.Enable();
            PMSAdminSession.GetSession();
            PMSSession.GetSession();
            PMSSecuritySession.GetSession();
            RuleEngineSession.GetSession();
        }
Exemple #13
0
        private static void configeLocator()
        {
            var container = new WindsorContainer();

            container.AddFacility <WcfFacility>();
            container.Kernel.ComponentModelBuilder.RemoveContributor(
                container.Kernel.ComponentModelBuilder.Contributors.OfType <PropertiesDependenciesModelInspector>()
                .Single());

            RegisterDataAccess(container);

            container.Register(
                Component.For <ILoggerService>()
                .ImplementedBy <DbLoggerService>()
                .Named("DB")
                .LifeStyle.BoundTo <IService>(),
                Component.For <ILoggerService>()
                .ImplementedBy <FileLoggerService>()
                .Named("File")
                .LifeStyle.BoundTo <IService>(),
                Component.For <ILoggerService>()
                .ImplementedBy <WindowsEventsLoggerService>()
                .Named("WindowsEvent")
                .LifeStyle.BoundTo <IService>()
                );


            container.Register
            (
                Classes.FromAssemblyContaining <MITD.PMS.Application.JobService>()
                .BasedOn <IService>().If(c => c.Namespace == typeof(MITD.PMS.Application.JobService).Namespace &&
                                         c.Name != typeof(MITD.PMS.Application.CalculatorEngine).Name
                                         &&
                                         c.Name !=
                                         typeof(MITD.PMS.Application.JobIndexPointCalculator).Name
                                         &&
                                         c.Name !=
                                         typeof(MITD.PMS.Application.CalculationDataProvider).Name
                                         )
                .WithService.FromInterface()
                .LifestyleBoundToNearest <IService>(),
                Classes.FromAssemblyContaining <FunctionService>()
                .BasedOn <IService>().If(c => c.Namespace == typeof(FunctionService).Namespace)
                .WithService.FromInterface()
                .LifestyleBoundToNearest <IService>(),
                Classes.FromAssemblyContaining <MITD.PMS.Domain.Service.RuleBasedPolicyEngineService>()
                .BasedOn <IService>().OrBasedOn(typeof(IConfigurator))
                .WithService.FromInterface()
                .LifestyleBoundToNearest <IService>(),


                Component.For <IRuleService>().ImplementedBy <RuleEngineService>()
                .LifestyleBoundToNearest <IService>(),
                Component.For <IServiceLocatorProvider>().ImplementedBy <LocatorProvider>()
                .DependsOn(new Hashtable {
                { "connectionName", "PMSDBConnection" }
            })
                .LifeStyle.BoundTo <IService>()
                ,
                Component.For <IEventPublisher>().ImplementedBy <EventPublisher>()
                .LifestyleBoundTo <IService>(),
                Component.For <ILogManagerService>().ImplementedBy <LogManagerService>()
                .LifestyleBoundToNearest <IService>(),
                Component.For <ILogService>().ImplementedBy <LogService>()
                .LifestyleBoundToNearest <IService>(),
                Component.For <ILoggerServiceFactory>().ImplementedBy <LoggerServiceFactory>()
                .LifestyleBoundToNearest <IService>()
            );

            container.Register(
                Component.For <IInquiryJobIndexPointCreatorService>()
                .ImplementedBy <InquiryJobIndexPointCreatorService>()
                .LifeStyle.Transient);
            container.Register(
                Component.For <IPMSAdminService>().ImplementedBy <PMSAdminService>().LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IJobPositionInquiryConfiguratorService>()
                .ImplementedBy <JobPositionInquiryConfiguratorService>()
                .LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IUnitInquiryConfiguratorService>()
                .ImplementedBy <UnitInquiryConfiguratorService>()
                .LifestyleBoundTo <IService>());

            container.Register(
                Component.For <IJobIndexPointCalculatorProvider>()
                .ImplementedBy <JobIndexPointCalculatorProvider>()
                .LifeStyle.Singleton.IsDefault());

            container.Register(
                Component.For <IInquiryConfiguratorService>()
                .ImplementedBy <InquiryConfiguratorService>()
                .LifeStyle.Singleton.IsDefault());


            container.Register(
                Component.For <IPeriodBasicDataCopierService>()
                .ImplementedBy <PeriodBasicDataCopierService>()
                .LifeStyle.Singleton.IsDefault());

            //container.Register(
            //    Component.For<IEmployeePointCopierService>()
            //        .ImplementedBy<EmployeePointCopierService>()
            //        .LifeStyle.Singleton.IsDefault());

            container.Register(
                Component.For <ICalculatorEngine>().ImplementedBy <CalculatorEngine>()
                .LifeStyle.Transient);


            container.Register(
                Component.For(typeof(IServiceLifeCycleManager <>)).ImplementedBy(typeof(ServiceLifeCycleManager <>))
                .LifeStyle.Transient);

            container.Register(
                Component.For <ICalculationDataProvider>().ImplementedBy <CalculationDataProvider>()
                .LifeStyle.Transient);

            container.Register(
                Component.For <IJobIndexPointCalculator>().ImplementedBy <JobIndexPointCalculator>().LifeStyle.Transient);

            container.Register(
                Component.For <IFaultExceptionAdapter>()
                .ImplementedBy <CalculationFaultExceptionAdapter>()
                .LifeStyle.Singleton);

            container.Register(
                Component.For <CalculationEngineService>().LifeStyle.PerWcfOperation());

            var locator = new WindsorServiceLocator(container);

            ServiceLocator.SetLocatorProvider(() => locator);

            //NHibernateInnerJoinSupport.Enable();
            PMSAdminSession.GetSession();
            PMSSession.GetSession();
            RuleEngineSession.GetSession();

            registerExceptionConvertors();
        }