public void Initialise()
        {
            this.inactivityThresholdPeriod = int.Parse(ConfigurationManager.AppSettings["InactivityThresholdPeriod"]);
            this.reviewEventyTypeCode = ConfigurationManager.AppSettings["ReviewEventyTypeCode"];
            this.inactivityDetectionProcess = ConfigurationManager.AppSettings["InactivityDetectionProcess"];
            
            var container = new UnityContainer();
            ObjectFactory.Instance = new ObjectFactory(container);
            this.inactivityTask = new InactivityDetectionTask();
            this.processes = new List<ITaskProcess>();
            this.processEvents = new List<IProcessEvent>();
            
            var taskService = MockRepository.GenerateStub<ITaskService>();
            container.RegisterInstance(taskService);
            taskService.Stub(a => a.FindActiveProcesses(null)).IgnoreArguments().Return(this.processes);
            taskService.Stub(a => a.FindProcessEvents(null, 0, 0)).IgnoreArguments().Return(this.processEvents);

            this.claimHeader = new BusinessComponentBuilder<ClaimHeader>()
                    .SetProperty(a => a.ClaimReference = "CH Reference")
                    .SetProperty(a => a.CustomCode20 = MaxClaimDetails.ToString())
                    .Add(new BusinessComponentBuilder<ClaimDetail>()
                        .SetProperty(a => a.ClaimDetailReference = "CD1 Reference"))
                    .Add(new BusinessComponentBuilder<ClaimDetail>()
                        .SetProperty(a => a.ClaimDetailReference = "CD2 Reference"))
                    .Add(new BusinessComponentBuilder<ClaimInvolvement>()
                        .SetProperty(a => a.ClaimInvolvementType = (short)StaticValues.LinkableComponentType.NameInvolvement)
                        .Add(new BusinessComponentBuilder<ClaimNameInvolvement>()
                            .SetProperty(a => a.NameInvolvementType = (short)StaticValues.NameInvolvementType_ClaimNameInvolvement.MainClaimHandler)
                            .SetProperty(a => a.NameInvolvementMaintenanceStatus = (short)StaticValues.ClaimNameInvolvementMaintenanceStatus.Latest)
                            .SetProperty(a => a.NameID = 2)))
                    .Build();

            var claimEntities = MockRepository.GenerateStub<IClaimsQuery>();
            this.targetClaimEvent = new ClaimEvent();
            this.targetUser = new User { UserID = 999};

            Func<DateTime, IEnumerable<long>, ILookup<ClaimHeader, ClaimDetail>> returnLookup = (x, y) => this.claimHeader.InternalClaimDetails.ToLookup(a => a.ClaimHeader);
            claimEntities.Stub(a => a.GetInactiveClaims(DateTime.Now, null)).IgnoreArguments().Do((Func<DateTime, IEnumerable<long>, ILookup<ClaimHeader, ClaimDetail>>)returnLookup);
            container.RegisterInstance<IClaimsQuery>(claimEntities);
            MockRepository repository = new MockRepository();
            container.RegisterInstance(MockRepository.GenerateStub<ICopyValidation>());
            this.claimEventTransaction = new MockBusinessTransaction(new TransactionContext(string.Empty, string.Empty, string.Empty));
            this.claimEventTransaction.Context.SetUsage(BusinessProcessUsage.Updateable);
            this.claimEventTransaction.Component = this.targetClaimEvent;
            container.RegisterInstance<IBusinessTransaction>("Claims.CreateEvent", this.claimEventTransaction);

            var metadataEntities = MockRepository.GenerateStub<IMetadataQuery>();
            metadataEntities.Stub(a => a.GetEventTypeVersion(null)).IgnoreArguments().Return(new EventTypeVersion[] { }.AsQueryable());
            metadataEntities.Stub(a => a.GetUserByNameId(2)).Return(this.targetUser);
            container.RegisterInstance(metadataEntities);
            container.RegisterInstance<IMessageService>(new MockMessagingService());

            this.inactivityTask.GetInactiveClaimDetails = this.GetInactiveTestClaims;
        }
		public void Initialize()
		{
			string qualityControlEventTypeCode = ClaimsBusinessLogicHelper.ResolveMandatoryConfig<string>(QualityControlEventTypeCode);
			string processName = ClaimsBusinessLogicHelper.ResolveMandatoryConfig<string>(QualityControlProcess);
			string claimUserRoleCode = ClaimsBusinessLogicHelper.ResolveMandatoryConfig<string>(ClaimUserRoleCode);

			var container = new UnityContainer();
			ObjectFactory.Instance = new ObjectFactory(container);
			this.qualityCheckTask = new QualityCheckTask();
			this.processes = new List<ITaskProcess>();

			List<string> processNames = new List<string>();

			object[] parameters = new object[] { XiapConstants.XIAP_DATASOURCE };
			this.taskService = MockRepository.GenerateStub<ITaskService>();
			container.RegisterInstance(this.taskService);
			this.taskService.Stub(a => a.GetFinishedTasksForUserByDateRange(null, null, DateTime.Now, DateTime.Now)).IgnoreArguments().Return(this.processes);

			this.claimEntities = MockRepository.GenerateStub<IClaimsQuery>();
            container.RegisterInstance<IClaimsQuery>(this.claimEntities);
	
			this.claimHeader = new BusinessComponentBuilder<ClaimHeader>()
					.SetProperty(a => a.ClaimReference = "CH Reference")
					.Add(new BusinessComponentBuilder<ClaimDetail>()
						.SetProperty(a => a.ClaimDetailReference = "CD1 Reference"))
                    .Add(new BusinessComponentBuilder<ClaimInvolvement>()
						.SetProperty(a => a.ClaimInvolvementType = (short)StaticValues.LinkableComponentType.NameInvolvement)
                        .Add(new BusinessComponentBuilder<ClaimNameInvolvement>()
							.SetProperty(a => a.NameInvolvementType = (short)StaticValues.NameInvolvementType_ClaimNameInvolvement.MainClaimHandler)
							.SetProperty(a => a.NameInvolvementMaintenanceStatus = (short)StaticValues.ClaimNameInvolvementMaintenanceStatus.Latest)
							.SetProperty(a => a.NameID = 2)))
					.Build();
			
			this.targetUser = new User { UserID = 999, UserIdentity = "TestUser" };
			var metadataEntities = MockRepository.GenerateStub<IMetadataQuery>();
			container.RegisterInstance(metadataEntities);
			metadataEntities.Stub(a => a.GetUserByNameId(2)).Return(this.targetUser);
			metadataEntities.Stub(a => a.GetUsersByRole("Developer")).IgnoreArguments().Return(new List<User>() { this.targetUser });

			MockRepository repository = new MockRepository();
			container.RegisterInstance(MockRepository.GenerateStub<ICopyValidation>());
			this.claimEventTransaction = new MockBusinessTransaction(new TransactionContext(String.Empty, String.Empty,String.Empty));
			this.claimEventTransaction.Context.SetUsage(BusinessProcessUsage.Updateable);
			this.targetClaimEvent = new ClaimEvent();
			this.claimEventTransaction.Component = this.targetClaimEvent;
			container.RegisterInstance<IBusinessTransaction>("Claims.CreateEvent", this.claimEventTransaction);
		}
Beispiel #3
0
 /// <summary>
 /// Method sets the Default TaskInitialUserID on validate.
 /// </summary>
 /// <param name="pluginHelper">plugin helper of business component</param>
 /// <param name="claimEvent">component of type claim event</param>
 private void SetTaskInitialUserForEvents(PluginHelper<IBusinessComponent> pluginHelper, ClaimEvent claimEvent)
 {
     // UI Label = Priority?; Post event
     // If the event type is a "POST" type and the Priority? value (CustomCode02) is "REC", set the TaskInitialUser to null.
     if (claimEvent.EventTypeCode == ClaimConstants.EVENT_POST_TYPECODE && claimEvent.CustomCode02 == ClaimConstants.EVENT_PRIORITY_REC)   
     {
         claimEvent.TaskInitialUserID = null;
     }
     else if (claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_CLAIM_CREATED_TYPECODE) || claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_INACTIVITY_REVIEW_TYPECODE) || claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_PAYMENT_CANCELLATION_TYPECODE)
             || claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_PHONE_TYPECODE) || claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_POST_TYPECODE) || claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_REPORT_REVIEW_TYPECODE)
             || claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_REVIEW_TYPECODE) || claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_RECOVERY_INACTIVITY_REVIEW_TYPECODE) || claimEvent.EventTypeCode.Equals(ClaimConstants.EVENT_REOPEN_CLAIM_TYPECODE))
     {
         // Otherwise, if the event type is in the allowed values and the TaskInitialUser isn't set
         // set the user to the Claim Handler.
         if (!claimEvent.TaskInitialUserID.HasValue || claimEvent.TaskInitialUserID.Value == 0)
         {
             long? userID = ClaimsBusinessLogicHelper.GetMainClaimHandlerUserID(pluginHelper);
             claimEvent.TaskInitialUserID = userID;
         }
     }
 }
        internal static void TestInitialize(ref ClaimEvent component, ref ProductEvent pce)
        {
            component = new ClaimEvent();
            component.ProductEventID = 34;

            if (pce == null)
            {
                pce = new ProductEvent();
            }

            component.InternalClaimHeader = new ClaimHeader();
            component.ClaimHeader.InternalClaimDetails.Add(new ClaimDetail() { ClaimDetailReference = "D0001" });
            ClaimInvolvement claimInvolvement = new ClaimInvolvement() { InternalClaimHeader = component.InternalClaimHeader, ClaimInvolvementType = (short)Xiap.Metadata.Data.Enums.StaticValues.LinkableComponentType.NameInvolvement, InternalClaimNameInvolvements = new System.Data.Objects.DataClasses.EntityCollection<ClaimNameInvolvement>() };
            ClaimNameInvolvement nameInvolvement = new ClaimNameInvolvement() { NameInvolvementType = (short)StaticValues.NameInvolvementType_ClaimNameInvolvement.MainClaimHandler, NameInvolvementMaintenanceStatus = (short)StaticValues.ClaimNameInvolvementMaintenanceStatus.Latest, NameID = 1 };
            claimInvolvement.InternalClaimNameInvolvements.Add(nameInvolvement);
            component.InternalClaimHeader.InternalClaimInvolvements.Add(claimInvolvement);

            pce.ProductVersion = new ProductVersion();
            pce.ProductVersion.Product = new Product();
            pce.ProductVersion.Product.Code = "TST";

            pce.EventType = new EventType();
            pce.EventType.IsStatusChangeEvent = false;
            pce.EventType.IsSystemCreationAllowed = false;
            pce.EventType.IsManualCreationAllowed = true;
            pce.EventType.IsManualDeletionAllowed = true;
            pce.EventType.Code = "ABCD";
            pce.EventTypeReference.SetEntityKey(new System.Data.EntityKey("MetadataEntities.EventType", "Code", "ABCD"));

            IComponentMetadata metadata = MockRepository.GenerateStub<IComponentMetadata>();
            metadata.Stub(m => m.GetDefinitionComponent<EventType>()).Return(pce.EventType);

            UnityContainer container = new UnityContainer();
            container.RegisterType<IMessageService, MessageService>();
            container.RegisterInstance<IComponentMetadata>(metadata);

            var metadataMock = MockRepository.GenerateStub<IMetadataQuery>();
            var list = new List<ProductEvent>() { pce };
            long productEventID = 34;

            metadataMock.Stub(m => m.GetProductEvent(productEventID));

            var listEventType = new List<EventType>() { pce.EventType };
            metadataMock.Stub(m => m.GetEventType("ABCD")).Return(listEventType.AsQueryable());

            EventTypeVersion etv = new EventTypeVersion();
            etv.EventTypeVersionID = 34;
            var listTypeVersion = new List<EventTypeVersion>() { etv };
            metadataMock.Stub(m => m.GetEventTypeVersion("ABCD")).Return(listTypeVersion.AsQueryable());

         

            container.RegisterInstance<IMetadataQuery>(metadataMock);
            container.RegisterType<ObjectContext, MetadataEntities>("MetadataEntities", new InjectionConstructor[] { new InjectionConstructor(new object[] { }) });
            container.RegisterType<MetadataEntities>("MetadataEntities", new InjectionConstructor[] { new InjectionConstructor(new object[] { }) });
            IConfigurationManager configurationManager = MockRepository.GenerateStub<IConfigurationManager>();
            configurationManager.Stub(m => m.AppSettings).Return(new System.Collections.Specialized.NameValueCollection());
            container.RegisterInstance<IConfigurationManager>(configurationManager);
            ObjectFactory.Instance = new ObjectFactory(container);

            component.Context = new ClaimsTransactionContext(string.Empty, string.Empty, string.Empty);
        }
        /// <summary>
        /// Starts a task using the core Process Instantiation after first setting up the appropriate ClaimHeaderLink data.
        /// </summary>
        /// <param name="header">claim header</param>
        /// <param name="claimEvent">claim event component</param>
        /// <param name="processName">string value</param>
        /// <param name="folio">string value</param>
        /// <param name="data">dictionary collection</param>
        /// <param name="documentReference">string value of Document Reference</param>
        private void InstantiateProcess(ClaimHeader header, ClaimEvent claimEvent, string processName, string folio, Dictionary<string, object> data, string documentReference = null)
        {
            List<LinkedComponentItem> claimHeaderLink = null;

            if (claimEvent == null || claimEvent.ClaimDetail == null)
            {
                claimHeaderLink = new List<LinkedComponentItem> { new LinkedComponentItem { SystemComponentId = SystemComponentConstants.ClaimHeader, ComponentId = header.ClaimHeaderID } };
            }
            else
            {
                claimHeaderLink = new List<LinkedComponentItem> { new LinkedComponentItem { SystemComponentId = SystemComponentConstants.ClaimHeader, ComponentId = header.ClaimHeaderID }, new LinkedComponentItem { SystemComponentId = SystemComponentConstants.ClaimDetail, ComponentId = claimEvent.ClaimDetail.ClaimDetailID } };
            }

            if (documentReference != null)
            {
                var document = header.ClaimDocuments.SingleOrDefault(d => d.DocumentReference == documentReference);
                if (document != null)
                {
                    claimHeaderLink.Add(new LinkedComponentItem() { SystemComponentId = SystemComponentConstants.Document, ComponentId = document.DocumentID });
                }
            }

            ProcessHandlerHelper.InstantiateProcess(processName, folio, data, claimHeaderLink.ToArray());
        }