Exemple #1
0
 public virtual bool PreResolve(IWorkflowContext context)
 {
     return(Resolve(context));
 }
Exemple #2
0
        protected override void ExecuteWorkflowLogic(CodeActivityContext executionContext, IWorkflowContext context, IOrganizationService service)
        {
            var incidentCloseRequest = new CloseIncidentRequest()
            {
                Status             = IncidentStatus.Get(executionContext),
                IncidentResolution = new Entity("incidentresolution")
                {
                    ["subject"]     = Subject.Get(executionContext),
                    ["incidentid"]  = Incident.Get(executionContext),
                    ["actualend"]   = CloseDate.Get(executionContext),
                    ["description"] = Description.Get(executionContext)
                }
            };

            service.Execute(incidentCloseRequest);
        }
Exemple #3
0
        public override void Enter(IWorkflowContext context)
        {
            var      users      = Actor.Resolve(context).OrderBy(o => o.Rank);
            string   instanceId = context.FlowInstance.Id;
            var      lastItem   = context.FlowInstance.WorkItems.OrderByDescending(o => o.ItemId).First();
            DateTime dt         = DateTime.Now;
            int      i          = 1;
            string   levelCode  = context.CurrentTask.LevelCode;
            string   keyInfo    = context.CurrentTask.ParallelInfo;

            if (!context.LevelCode.Equals(context.CurrentTask.LevelCode, StringComparison.CurrentCultureIgnoreCase))
            {
                //从普通审批步骤,进入到会签入的审批步骤,或者从会签入的审批步骤,退出到普通的审批步骤,都会进入这里。
                //主要体现是上下文中的levelCode不等于当前工作项的levelCode,因为经过“并行开始”或“并行结束”步骤,都会把上下文的levelCode改掉。
                levelCode = context.LevelCode;

                if (levelCode.EndsWith(":"))
                {
                    //并行开始步骤 直接 连接 审批步骤 时,会进入这里。levelCode不能单纯取上下文中的levelCode,要去自动生成
                    //上下文的可能是00-4:,自动生成后,就会变成00-4:01,00-4:02....
                    levelCode = context.FlowInstance.GetLevelCode(context.LevelCode, 1)[0];
                }
                else
                {
                    if (levelCode != "00")
                    {
                        //从嵌套会签中退出外层会签时,需要为当前工作项找回外层会签的并行keyInfo
                        var firstWorkItem = context.FlowInstance.WorkItems.OrderBy(o => o.ItemId).FirstOrDefault(o => o.LevelCode == levelCode);
                        if (firstWorkItem != null)
                        {
                            keyInfo = firstWorkItem.ParallelInfo;
                        }
                    }
                }
            }
            foreach (var user in users)
            {
                var workflowItem = ObjectHelper.GetObject <IWorkflowItem>();
                workflowItem.PartUserId           = user.Id;
                workflowItem.PartUserName         = user.Name;
                workflowItem.InstanceId           = instanceId;
                workflowItem.ItemId               = lastItem.ItemId + i;
                workflowItem.ItemSeq              = lastItem.ItemSeq + 1;
                workflowItem.PartDepepartmentName = user.Department.Name;
                workflowItem.PartDepartmentId     = user.Department.Id;
                workflowItem.ParallelInfo         = keyInfo;
                if (ResponseRuleType == ResponseRuleType.SerialResponse && i != 1)
                {
                    workflowItem.Status = WorkItemStatus.Pause;
                }
                else
                {
                    workflowItem.Status = WorkItemStatus.Sent; //如果是 串行审批  工作项的状态在这里是不一样的。
                }
                workflowItem.ReceiveTime     = dt;
                workflowItem.ExpiredTime     = GetExpiredTime();
                workflowItem.PreItemId       = context.CurrentTask.ItemId;
                workflowItem.AppCode         = context.FlowInstance.ApplicationId;
                workflowItem.CurrentActivity = this.Name;
                workflowItem.Alias           = Alias;
                workflowItem.LevelCode       = levelCode;
                workflowItem.PasserUserId    = context.CurrentUser.Id;
                workflowItem.PasserUserName  = context.CurrentUser.Name;
                context.FlowInstance.InsertWorkItem(workflowItem);
                i++;
            }
            SendOtherToRead(context);
        }
        }                                                          //Notificado


        #endregion

        protected override void Execute(CodeActivityContext executionContext)
        {
            //Create the tracing service
            ITracingService tracingService = executionContext.GetExtension <ITracingService>();

            //Create the context
            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);


            try
            {
                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {
                    EntityReference usCaseType = CaseType.Get <EntityReference>(executionContext);
                    OptionSetValue  usEstado   = StatusCode.Get <OptionSetValue>(executionContext);

                    //tracingService.Trace("usCaseType " + CaseType.ToString());
                    //tracingService.Trace("usEstado " + usEstado.Value);

                    //Local Variables
                    int      estado     = usEstado.Value;
                    string   typeCase   = "";
                    DateTime modifiedOn = DateTime.Now;
                    int      estadoC    = 0;

                    Entity entity = (Entity)context.InputParameters["Target"];
                    if (entity.LogicalName != "incident")
                    {
                        return;
                    }
                    if (entity == null)
                    {
                        return;
                    }

                    Entity dataCase = service.Retrieve("incident", entity.Id, new ColumnSet("statuscode", "ust_dateofnotification"));

                    //tracingService.Trace("dataCase " + dataCase.Id);

                    if (dataCase.Attributes.Contains("ust_dateofnotification") && dataCase.Attributes["ust_dateofnotification"] != null)
                    {
                        modifiedOn = (DateTime)dataCase.Attributes["ust_dateofnotification"];
                    }

                    DateTime fechatemp = modifiedOn;
                    int      diaT      = fechatemp.Day;
                    int      mesT      = fechatemp.Month;
                    int      anioT     = fechatemp.Year;

                    Entity caseType = service.Retrieve("amxperu_casetype", usCaseType.Id, new Microsoft.Xrm.Sdk.Query.ColumnSet("ust_code"));

                    if (caseType.Attributes.Contains("ust_code") && caseType.Attributes["ust_code"] != null)
                    {
                        tracingService.Trace("ust_code " + caseType.Attributes.Contains("ust_code").ToString());
                        //Get the Case Type Code
                        typeCase = caseType.Attributes["ust_code"].ToString(); //004  Reclamo OSIPTEL
                    }

                    //myTrace.Trace("typeCase :" + typeCase.ToString());
                    tracingService.Trace("estado " + estado.ToString());

                    if (typeCase == "004" && estado == 864340003) //Tipo reclamo OSIPTEL and Estado(Notificado)
                    {
                        //Buscar si hay hijo del reclamo Abierto
                        string codeQueja = "005";

                        var fetchQueja = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                                         "<entity name='amxperu_casetype'>" +
                                         "<attribute name='amxperu_casetypeid' />" +
                                         "<attribute name='amxperu_name' />" +
                                         "<attribute name='createdon' />" +
                                         "<order attribute='amxperu_name' descending='false' />" +
                                         "<filter type='and'>" +
                                         "<condition attribute='ust_code' value ='" + codeQueja + "' operator= 'eq' />" +
                                         "</filter>" +
                                         "</entity>" +
                                         "</fetch>";

                        EntityCollection resultQ = service.RetrieveMultiple(new FetchExpression(fetchQueja));
                        foreach (var c in resultQ.Entities)
                        {
                            var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                                           "<entity name='incident'>" +
                                           "<attribute name='title' />" +
                                           "<attribute name='ticketnumber' />" +
                                           "<attribute name='createdon' />" +
                                           "<attribute name='caseorigincode' />" +
                                           "<attribute name='etel_isdispute' />" +
                                           "<attribute name='incidentid' />" +
                                           "<attribute name='statuscode' />" +
                                           "<attribute name='statecode' />" +
                                           "<order attribute='title' descending='false' />" +
                                           "<filter type='and'>" +
                                           "<condition attribute='amxperu_casetype' operator='eq' uiname='' uitype='amxperu_casetype' value='" + c.Id + "' />" +
                                           "<condition attribute='statecode' value='0' operator='eq' /> " +
                                           "<condition attribute='parentcaseid' value='" + entity.Id + "' uitype='incident' operator='eq' /> " +
                                           "</filter>" +
                                           "</entity>" +
                                           "</fetch>";

                            EntityCollection result = service.RetrieveMultiple(new FetchExpression(fetchXml));
                            foreach (var d in result.Entities)
                            {
                                var fetchXmlCon = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                                                  "<entity name='etel_crmconfiguration'>" +
                                                  "<attribute name='etel_crmconfigurationid' />" +
                                                  "<attribute name='etel_name' />" +
                                                  "<attribute name='createdon' />" +
                                                  "<attribute name='etel_value' />" +
                                                  "<attribute name='statecode' />" +
                                                  "<order attribute='etel_name' descending='false' />" +
                                                  "<filter type='and'>" +
                                                  "<condition attribute='etel_name' operator='eq' uiname='' value='ResolveOSIPTELClaim' />" +
                                                  "</filter>" +
                                                  "</entity>" +
                                                  "</fetch>";

                                EntityCollection resultCon = service.RetrieveMultiple(new FetchExpression(fetchXmlCon));

                                if (resultCon[0].Attributes["etel_value"].ToString() != null)
                                {
                                    double plazo = Convert.ToUInt32(resultCon[0].Attributes["etel_value"]);

                                    for (int i = 0; i < plazo; i++)
                                    {
                                        if (modifiedOn.DayOfWeek == DayOfWeek.Sunday || modifiedOn.DayOfWeek == DayOfWeek.Saturday)
                                        {
                                            plazo = plazo + 1;
                                        }
                                        modifiedOn = modifiedOn.AddDays(1);
                                    }
                                    DateTime fechaUtil = modifiedOn.AddDays(1);

                                    DateTime fechaActual = DateTime.Now;

                                    if (fechaUtil < fechaActual)
                                    {
                                        if (d.Attributes.Contains("statecode") && d["statecode"] != null)
                                        {
                                            estadoC = ((OptionSetValue)dataCase.Attributes["statecode"]).Value;
                                            if (estadoC != 0)
                                            {
                                                Entity resolution = new Entity("incidentresolution");
                                                resolution["subject"]    = "Closed";
                                                resolution["incidentid"] = new EntityReference(dataCase.LogicalName, dataCase.Id);

                                                CloseIncidentRequest closecase = new CloseIncidentRequest();

                                                closecase.IncidentResolution = resolution;
                                                closecase.Status             = new OptionSetValue(5);

                                                CloseIncidentResponse closeresponse = (CloseIncidentResponse)service.Execute(closecase);
                                            }
                                        }
                                        else
                                        {
                                            Entity resolution = new Entity("incidentresolution");
                                            resolution["subject"]    = "Closed";
                                            resolution["incidentid"] = new EntityReference(dataCase.LogicalName, dataCase.Id);

                                            CloseIncidentRequest closecase = new CloseIncidentRequest();

                                            closecase.IncidentResolution = resolution;
                                            closecase.Status             = new OptionSetValue(5);

                                            CloseIncidentResponse closeresponse = (CloseIncidentResponse)service.Execute(closecase);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    //throw new InvalidPluginExecutionException("Mensaje de error. ");
                }
            }
            catch (global::System.Exception)
            {
                throw;
            }
        }
 public override async Task <IList <object> > GenerateInputParameters(string configuration, IWorkflowContext context)
 {
     return(await Task.FromResult(new List <object> {
     }));
 }
        protected override void Execute(CodeActivityContext executionContext)
        {
            ITracingService             tracer         = executionContext.GetExtension <ITracingService>();
            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            try
            {
                DateTime        originalDate      = OriginalDate.Get(executionContext);
                int             businessDaysToAdd = BusinessDaysToAdd.Get(executionContext);
                EntityReference holidaySchedule   = HolidayClosureCalendar.Get(executionContext);

                Entity           calendar      = null;
                EntityCollection calendarRules = null;
                if (holidaySchedule != null)
                {
                    calendar = service.Retrieve("calendar", holidaySchedule.Id, new ColumnSet(true));
                    if (calendar != null)
                    {
                        calendarRules = calendar.GetAttributeValue <EntityCollection>("calendarrules");
                    }
                }

                DateTime tempDate = originalDate;

                if (businessDaysToAdd > 0)
                {
                    while (businessDaysToAdd > 0)
                    {
                        tempDate = tempDate.AddDays(1);
                        if (tempDate.DayOfWeek == DayOfWeek.Sunday || tempDate.DayOfWeek == DayOfWeek.Saturday)
                        {
                            continue;
                        }

                        if (calendar == null)
                        {
                            businessDaysToAdd--;
                            continue;
                        }

                        bool isHoliday = false;
                        foreach (Entity calendarRule in calendarRules.Entities)
                        {
                            DateTime startTime = calendarRule.GetAttributeValue <DateTime>("starttime");

                            //Not same date
                            if (!startTime.Date.Equals(tempDate.Date))
                            {
                                continue;
                            }

                            //Not full day event
                            if (startTime.Subtract(startTime.TimeOfDay) != startTime || calendarRule.GetAttributeValue <int>("duration") != 1440)
                            {
                                continue;
                            }

                            isHoliday = true;
                            break;
                        }
                        if (!isHoliday)
                        {
                            businessDaysToAdd--;
                        }
                    }
                }
                else if (businessDaysToAdd < 0)
                {
                    while (businessDaysToAdd < 0)
                    {
                        tempDate = tempDate.AddDays(-1);
                        if (tempDate.DayOfWeek == DayOfWeek.Sunday || tempDate.DayOfWeek == DayOfWeek.Saturday)
                        {
                            continue;
                        }

                        if (calendar == null)
                        {
                            businessDaysToAdd++;
                            continue;
                        }

                        bool isHoliday = false;
                        foreach (Entity calendarRule in calendarRules.Entities)
                        {
                            DateTime startTime = calendarRule.GetAttributeValue <DateTime>("starttime");

                            //Not same date
                            if (!startTime.Date.Equals(tempDate.Date))
                            {
                                continue;
                            }

                            //Not full day event
                            if (startTime.Subtract(startTime.TimeOfDay) != startTime || calendarRule.GetAttributeValue <int>("duration") != 1440)
                            {
                                continue;
                            }

                            isHoliday = true;
                            break;
                        }
                        if (!isHoliday)
                        {
                            businessDaysToAdd++;
                        }
                    }
                }

                DateTime updatedDate = tempDate;

                UpdatedDate.Set(executionContext, updatedDate);
            }
            catch (Exception ex)
            {
                tracer.Trace("Exception: {0}", ex.ToString());
            }
        }
Exemple #7
0
        public async Task <IWorkfalowActivityResult> Execute(WorkfalowActivity activity, IWorkflowContext context)
        {
            //跟踪活动
            context.CurrentActivity = activity.ID;
            context.TraceService.Trace(context.ResourceType, context.ResourceInfo, context.UserInfo, context.CurrentDescription, context.CurrentNode, context.CurrentAction, context.CurrentBlock, context.CurrentActivity, string.Empty);

            List <object> inputParameters = new List <object>();

            //获取输入参数
            foreach (var pItem in activity.InputParameters.Values)
            {
                inputParameters.Add(await pItem.Calculate(context));
            }

            var service = getService(activity.Type);

            //获取从配置文件获取额外输入参数
            var extraInputParameters = await service.GenerateInputParameters(activity.Configuration, context);

            inputParameters.AddRange(extraInputParameters);

            return(await service.Execute(inputParameters, context));
        }
Exemple #8
0
        protected override void Execute(CodeActivityContext executionContext)
        {
            try
            {
                // Create tracing service for the plugin trace
                ITracingService tracingService = executionContext.GetExtension <ITracingService>();

                tracingService.Trace("Create Service");

                #region Retrieve the execution context service.
                IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
                IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
                IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);
                #endregion


                tracingService.Trace("Retrieve Campaign Response");
                #region Retrieve the campaign response.
                tracingService.Trace("Retrieve the GUID for campaign response");
                // Retrieve the GUID for campaign response
                _campaignResponseId = this.inputContract.Get(executionContext).Id;



                #endregion


                // Instantiate QueryExpression QEaccount
                var QEaccount = new QueryExpression("account");

                // Add columns to QEaccount.ColumnSet
                QEaccount.ColumnSet.AddColumns("accountnumber", "accountid");

                // Add link-entity QEaccount_activityparty
                var QEaccount_activityparty = QEaccount.AddLink("activityparty", "accountid", "partyid");
                QEaccount_activityparty.EntityAlias = "partyid";

                // Add link-entity QEaccount_activityparty_campaignresponse
                var QEaccount_activityparty_campaignresponse = QEaccount_activityparty.AddLink("campaignresponse", "activityid", "activityid");
                QEaccount_activityparty_campaignresponse.EntityAlias = "cr";

                // Define filter QEaccount_activityparty_campaignresponse.LinkCriteria
                QEaccount_activityparty_campaignresponse.LinkCriteria.AddCondition("activityid", ConditionOperator.Equal, _campaignResponseId);


                tracingService.Trace("Create EntityCollection to store entity results and retrieve Account.");
                //Create EntityCollection to store entity results and retrieve contracts. Just in case there are multiple contracts associated.
                EntityCollection crAccounts = service.RetrieveMultiple(QEaccount);
                Entity           _cracct    = new Entity();

                tracingService.Trace("Return Total Accounts " + crAccounts.TotalRecordCount);
                tracingService.Trace("Return  Accounts: " + crAccounts.EntityName);
                tracingService.Trace("Return  Accounts: " + crAccounts.Entities.Count);
                tracingService.Trace("Return Accounts: " + crAccounts.Entities.ToString());

                if (crAccounts.Entities.Count > 0)
                {
                    //Iterate the collection for the contractline which should only be one.
                    foreach (var cracct in crAccounts.Entities)
                    {
                        tracingService.Trace("Return  Campaign Responses: " + cracct.Attributes["accountid"]);
                        // Assign Contract to Contract Entity property
                        _cracct = cracct;
                    }
                    tracingService.Trace("Return Found Account");
                    outAccount.Set(executionContext, new EntityReference("account", (Guid)_cracct.Attributes["accountid"]));
                }
            }catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
 private void ExecuteWorkflow(CodeActivityContext executionContext, IWorkflowContext workflowContext, IOrganizationServiceFactory serviceFactory, IOrganizationService service, ITracingService tracing)
 {
 }
Exemple #10
0
        protected override void Execute(CodeActivityContext executionContext)
        {
            ITracingService             tracer         = executionContext.GetExtension <ITracingService>();
            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            try
            {
                EntityReference emailToSend = EmailToSend.Get(executionContext);
                Guid            roleId      = IsGuid(RecipientRole.Get(executionContext));
                bool            sendEmail   = SendEmail.Get(executionContext);

                if (roleId == Guid.Empty)
                {
                    tracer.Trace("Invalid Role GUID");
                    throw new InvalidWorkflowException("Invalid Role GUID");
                }

                List <Entity> ccList = new List <Entity>();

                Entity email = RetrieveEmail(service, emailToSend.Id);

                if (email == null)
                {
                    UsersAdded.Set(executionContext, 0);
                    return;
                }

                //Add any pre-defined recipients specified to the array
                foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("cc").Entities)
                {
                    ccList.Add(activityParty);
                }

                EntityCollection users = GetRoleUsers(service, roleId);

                ccList = ProcessUsers(users, ccList);

                //Update the email
                email["cc"] = ccList.ToArray();
                service.Update(email);

                //Send
                if (sendEmail)
                {
                    SendEmailRequest request = new SendEmailRequest
                    {
                        EmailId       = emailToSend.Id,
                        TrackingToken = string.Empty,
                        IssueSend     = true
                    };

                    service.Execute(request);
                }

                UsersAdded.Set(executionContext, ccList.Count);
            }
            catch (Exception ex)
            {
                tracer.Trace("Exception: {0}", ex.ToString());
            }
        }
Exemple #11
0
 private void ExecuteWorkflow(CodeActivityContext executionContext, IWorkflowContext workflowContext, IOrganizationServiceFactory serviceFactory, IOrganizationService service, ITracingService tracing)
 {
     //YOUR WORKFLOW-CODE GO HERE
 }
 /// <summary>
 /// If the imageName is populated and the PostEntityImages contains the given imageName Key, the Value is cast to the Entity type T, else null is returned
 /// If the imageName is not populated, than the first image in PostEntityImages with a value, is cast to the Entity type T, else null is returned
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="context"></param>
 /// <returns></returns>
 public static T GetPostEntity <T>(this IWorkflowContext context) where T : Entity
 {
     return(context.PreEntityImages.GetEntity <T>(DLaBExtendedWorkflowContext.WorkflowImageNames.PostImage));
 }
        protected override void Execute(CodeActivityContext wfContext)
        {
            ITracingService             ITracingService             = wfContext.GetExtension <ITracingService>();
            IWorkflowContext            context                     = wfContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory IOrganizationServiceFactory = wfContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service                     = IOrganizationServiceFactory.CreateOrganizationService(context.UserId);

            try
            {
                string    allFields            = fields.Get <string>(wfContext);
                string    allArabicFields      = arabicFields.Get <string>(wfContext);
                string[]  allFieldsArray       = allFields.Split(',');
                string[]  allArabicFieldsArray = allArabicFields.Split(',');
                ColumnSet set    = new ColumnSet(allFieldsArray);
                Entity    entity = service.Retrieve(context.PrimaryEntityName, context.PrimaryEntityId, set);

                if (entity.Id != Guid.Empty)
                {
                    Entity currentEntity = new Entity();
                    currentEntity.LogicalName = context.PrimaryEntityName;
                    currentEntity.Id          = context.PrimaryEntityId;
                    for (int i = 0; i < allFieldsArray.Length; i++)
                    {
                        string value = string.Empty;
                        if (entity.Attributes.Contains(allFieldsArray[i]))
                        {
                            // Create the request
                            RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
                            {
                                EntityLogicalName     = context.PrimaryEntityName,
                                LogicalName           = allFieldsArray[i],
                                RetrieveAsIfPublished = false
                            };

                            // Execute the request
                            RetrieveAttributeResponse attributeResponse = (RetrieveAttributeResponse)service.Execute(attributeRequest);
                            //if (context.PrimaryEntityName == "new_contracting" || attributeResponse.AttributeMetadata.AttributeType.Value.ToString() == "Money")
                            if (entity[allFieldsArray[i]] is Money)
                            {
                                value = ((Money)entity[allFieldsArray[i]]).Value.ToString();
                                value = String.Format("{0:N}", Convert.ToDouble(value));
                            }
                            else
                            {
                                value = entity[allFieldsArray[i]].ToString();
                            }

                            if (value != string.Empty)
                            {
                                string[] valueArray = value.Split('.');
                                currentEntity[allArabicFieldsArray[i]] = ConvertNumeralsToArabic(valueArray[0]);
                            }
                        }
                    }
                    service.Update(currentEntity);
                }
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Exemple #14
0
 public override bool PreResolve(IWorkflowContext context)
 {
     return(true);
 }
        protected override void Execute(CodeActivityContext executionContext)
        {
            ITracingService tracingService = executionContext.GetExtension <ITracingService>();

            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            tracingService.Trace("{0}{1}", "Start Custom Workflow Activity: SetOperatingCapacity", DateTime.Now.ToLongTimeString());

            var recordId = context.PrimaryEntityId;

            try
            {
                //Get Global Capacity values
                var capacity = new Services.CapacityFactors(service);

                Services.OperatingCapacity capacityService = new Services.OperatingCapacity(service, tracingService, capacity);

                #region Update Draft Project Requests
                //Update Draft Project Requests
                var projectRequestFetchXML = "<fetch version=\"1.0\" output-format=\"xml-platform\" mapping=\"logical\" distinct=\"false\">" +
                                             "<entity name=\"caps_project\" > " +
                                             "<attribute name=\"caps_facility\" /> " +
                                             "<attribute name=\"caps_changeindesigncapacitykindergarten\" /> " +
                                             "<attribute name=\"caps_changeindesigncapacityelementary\" /> " +
                                             "<attribute name=\"caps_changeindesigncapacitysecondary\" /> " +
                                             "<attribute name=\"caps_futurelowestgrade\" /> " +
                                             "<attribute name=\"caps_futurehighestgrade\" /> " +
                                             "<order attribute=\"caps_projectcode\" descending=\"false\" /> " +
                                             "<filter type=\"and\" > " +
                                             "<condition attribute=\"statuscode\" operator=\"eq\" value=\"1\" /> " +
                                             "<filter type=\"or\" > " +
                                             "<condition attribute=\"caps_changeinoperatingcapacitykindergarten\" operator=\"not-null\" /> " +
                                             "<condition attribute=\"caps_changeinoperatingcapacityelementary\" operator=\"not-null\" /> " +
                                             "<condition attribute=\"caps_changeinoperatingcapacitysecondary\" operator=\"not-null\" /> " +
                                             "</filter> " +
                                             "</filter> " +
                                             "</entity> " +
                                             "</fetch> ";

                EntityCollection projectResults = service.RetrieveMultiple(new FetchExpression(projectRequestFetchXML));

                foreach (caps_Project projectRecord in projectResults.Entities)
                {
                    if (projectRecord.caps_FutureLowestGrade != null && projectRecord.caps_FutureHighestGrade != null)
                    {
                        var startingDesign_K = 0;
                        var startingDesign_E = 0;
                        var startingDesign_S = 0;

                        //if facility exists, then retrieve it
                        if (projectRecord.caps_Facility != null && projectRecord.caps_Facility.Id != Guid.Empty)
                        {
                            var facility = service.Retrieve(caps_Facility.EntityLogicalName, projectRecord.caps_Facility.Id, new ColumnSet("caps_adjusteddesigncapacitykindergarten", "caps_adjusteddesigncapacityelementary", "caps_adjusteddesigncapacitysecondary")) as caps_Facility;

                            if (facility != null)
                            {
                                startingDesign_K = facility.caps_AdjustedDesignCapacityKindergarten.GetValueOrDefault(0);
                                startingDesign_E = facility.caps_AdjustedDesignCapacityElementary.GetValueOrDefault(0);
                                startingDesign_S = facility.caps_AdjustedDesignCapacitySecondary.GetValueOrDefault(0);
                            }
                        }

                        var changeInDesign_K = startingDesign_K + projectRecord.caps_ChangeinDesignCapacityKindergarten.GetValueOrDefault(0);
                        var changeInDesign_E = startingDesign_E + projectRecord.caps_ChangeinDesignCapacityElementary.GetValueOrDefault(0);
                        var changeInDesign_S = startingDesign_S + projectRecord.caps_ChangeinDesignCapacitySecondary.GetValueOrDefault(0);

                        var result = capacityService.Calculate(changeInDesign_K, changeInDesign_E, changeInDesign_S, projectRecord.caps_FutureLowestGrade.Value, projectRecord.caps_FutureHighestGrade.Value);

                        var recordToUpdate = new caps_Project();
                        recordToUpdate.Id = recordId;
                        recordToUpdate.caps_ChangeinOperatingCapacityKindergarten = Convert.ToInt32(result.KindergartenCapacity);
                        recordToUpdate.caps_ChangeinOperatingCapacityElementary   = Convert.ToInt32(result.ElementaryCapacity);
                        recordToUpdate.caps_ChangeinOperatingCapacitySecondary    = Convert.ToInt32(result.SecondaryCapacity);
                        service.Update(recordToUpdate);
                    }
                    else
                    {
                        //blank out operating capacity
                        var recordToUpdate = new caps_Project();
                        recordToUpdate.Id = recordId;
                        recordToUpdate.caps_ChangeinOperatingCapacityKindergarten = null;
                        recordToUpdate.caps_ChangeinOperatingCapacityElementary   = null;
                        recordToUpdate.caps_ChangeinOperatingCapacitySecondary    = null;
                        service.Update(recordToUpdate);
                    }
                }
                #endregion


                this.error.Set(executionContext, false);
            }
            catch (Exception ex)
            {
                tracingService.Trace("Error Details: {0}", ex.Message);
                //might want to also include error message
                this.error.Set(executionContext, true);
                this.errorMessage.Set(executionContext, ex.Message);
            }

            tracingService.Trace("{0}{1}", "End Custom Workflow Activity: SetOperatingCapacity", DateTime.Now.ToLongTimeString());
        }
        protected override void Execute(CodeActivityContext executionContext)
        {
            #region "Load CRM Service from context"

            Common objCommon = new Common(executionContext);
            objCommon.tracingService.Trace("Load CRM Service from context --- OK");
            #endregion

            #region "Read Parameters"
            String _FetchXML = this.FetchXML.Get(executionContext);
            if (_FetchXML == null || _FetchXML == "")
            {
                return;
            }

            objCommon.tracingService.Trace("_FetchXML=" + _FetchXML);

            IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>();

            #endregion

            #region "RollupFunctions Execution"
            string        pagingCookie = null;
            int           recordCount  = 0;
            int           pageNumber   = 1;
            int           fetchCount   = 250;
            List <object> objNumbers   = new List <object>();

            while (true)
            {
                _FetchXML = _FetchXML.Replace("{PARENT_GUID}", context.PrimaryEntityId.ToString());

                string xml = CreateXml(_FetchXML, pagingCookie, pageNumber, fetchCount);
                RetrieveMultipleRequest fetchRequest1 = new RetrieveMultipleRequest
                {
                    Query = new FetchExpression(xml)
                };
                EntityCollection returnCollection = ((RetrieveMultipleResponse)objCommon.service.Execute(fetchRequest1)).EntityCollection;
                foreach (var c in returnCollection.Entities)
                {
                    KeyValuePair <string, object> attribute = new KeyValuePair <string, object>();
                    foreach (KeyValuePair <string, object> att in c.Attributes)
                    {
                        attribute = att;
                        break;
                    }

                    objCommon.tracingService.Trace("Value: " + attribute.Value);
                    objNumbers.Add(attribute.Value);
                }
                if (returnCollection.MoreRecords)
                {
                    pageNumber++;
                    pagingCookie = returnCollection.PagingCookie;
                }
                else
                {
                    break;
                }
            }

            objCommon.tracingService.Trace("Query Data --- Done");

            decimal _count   = 0;
            decimal _sum     = 0;
            decimal _min     = 0;
            decimal _max     = 0;
            decimal _average = 0;
            if (objNumbers.Count > 0)
            {
                foreach (object obj in objNumbers)
                {
                    _count++;
                    decimal number = this.GetValue(obj);

                    _sum += number;
                    if (number < _min || _count == 1)
                    {
                        _min = number;
                    }
                    if (number > _max || _count == 1)
                    {
                        _max = number;
                    }
                }


                if (_count > 0)
                {
                    _average = _sum / _count;
                }
            }

            this.Count.Set(executionContext, _count);
            this.Sum.Set(executionContext, _sum);
            this.Average.Set(executionContext, _average);
            this.Min.Set(executionContext, _min);
            this.Max.Set(executionContext, _max);

            #endregion
        }
        //internal static string CustomEntityName = "new_isvactivityverifier";
        protected override void Execute(CodeActivityContext executionContext)
        {
            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.InitiatingUserId);

            ServiceBusListener  serviceBusListener  = new ServiceBusListener();
            MessageBufferClient messageBufferClient = serviceBusListener.GetMessageBufferClient();

            Message message = null;

            try
            {
                message = messageBufferClient.Retrieve();
            }
            catch (FaultException)
            {
                //MessageBufferClient.Retrieve() will throw a timeout exception, if there are no packets to retrieve. So, do not throw if it is a TimeOutException.
                //if (!(fe.Message.Contains("Message could not be retrieved")))
                //{
                //    throw fe;
                //}
                //continue;
            }
            catch (Exception)
            {
                //MessageBufferClient.Retrieve() will throw a timeout exception, if there are no packets to retrieve. So, do not throw if it is a TimeOutException.
                //if (!(ex.GetType().Name.Equals("TimeoutException") && ex.Message.Equals("Message could not be retrieved: RequestTimeout, Request Timeout")))
                //{
                //    throw ex;
                //}
                //continue;
            }

            foreach (MessageHeader header in message.Headers)
            {
                if (header.Name != "SecurityToken")
                {
                    continue;
                }

                StringBuilder sb     = new StringBuilder();
                var           writer = XmlWriter.Create(sb);
                header.WriteHeader(writer, MessageVersion.Default);
                writer.Close();

                string headerString = sb.ToString();

                string startNode   = "<SecurityToken xmlns=\"ns\">";
                int    startIndex  = headerString.IndexOf(startNode) + startNode.Length;
                int    endIndex    = headerString.LastIndexOf("</SecurityToken>");
                string tokenString = headerString.Substring(startIndex, endIndex - startIndex);
            }

            switch (message.Headers.Action)
            {
            case "https://schemas.microsoft.com/xrm/2011/Contracts/IServiceEndpointPlugin/Execute":
                ProcessMessages(message.GetBody <RemoteExecutionContext>(), service);
                break;
                //} //end - infinite for loop
            }
        }
Exemple #18
0
        protected override void Execute(CodeActivityContext executionContext)
        {
            // Create the tracing service
            ITracingService tracingService = executionContext.GetExtension <ITracingService>();

            if (tracingService == null)
            {
                throw new InvalidPluginExecutionException("Failed to retrieve tracing service.");
            }

            tracingService.Trace("Entered GenerateNoteMapActivity.Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}",
                                 executionContext.ActivityInstanceId,
                                 executionContext.WorkflowInstanceId);

            // Create the context
            IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>();

            if (context == null)
            {
                throw new InvalidPluginExecutionException("Failed to retrieve workflow context.");
            }

            tracingService.Trace("GenerateNoteMapActivity.Execute(), Correlation Id: {0}, Initiating User: {1}",
                                 context.CorrelationId,
                                 context.InitiatingUserId);

            if (_service == null)
            {
                IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
                _service     = serviceFactory.CreateOrganizationService(context.UserId);
                _privService = serviceFactory.CreateOrganizationService(null);
            }

            try
            {
                tracingService.Trace("Retriving Annotation");

                Annotation annotation = (Annotation)_privService.Retrieve(
                    Annotation.EntityLogicalName, context.PrimaryEntityId,
                    new ColumnSet(new string[] { "annotationid", "objectid" }));

                tracingService.Trace("Retriving Property List");

                jll_propertylist propertyList = (jll_propertylist)_privService.Retrieve(
                    jll_propertylist.EntityLogicalName, annotation.ObjectId.Id,
                    new ColumnSet(new string[] { "jll_autozooming", "jll_mapzoom", "jll_pageorientation" }));

                tracingService.Trace("Have data");

                EntityCollection rows = GetPropertyData(annotation.ObjectId.Id, _privService);

                if (rows.Entities.Any())
                {
                    XmlDocument xdoc         = new XmlDocument();
                    var         dataSetsNode = xdoc.CreateElement("datasets");
                    xdoc.AppendChild(dataSetsNode);
                    DocGeneration.MapHelper.SerialiseData(dataSetsNode, "parent", rows, tracingService);
                    XPathNavigator navigator = xdoc.CreateNavigator();

                    XPathNodeIterator _longitudeNodes = navigator.Select(@"//jll_longitude");
                    XPathNodeIterator _latitudeNodes  = navigator.Select(@"//jll_latitude");
                    XPathNodeIterator _dataNodes      = navigator.Select(@"//Entity");

                    if (_longitudeNodes.Count == 0 && _latitudeNodes.Count == 0)
                    {
                        return;
                    }

                    decimal coeff = 1.413542M;
                    decimal width = GetValue(_privService, "map_width", 1010);
                    //decimal width = 1010;
                    decimal height = (int)(width / coeff);
                    string  name   = @"landscape";

                    if (propertyList.jll_pageorientation != null)
                    {
                        //portrait
                        if (propertyList.jll_pageorientation.Value == 856480001)
                        {
                            height = GetValue(_privService, "map_height", 1010);
                            width  = (int)(1010 / coeff);
                            name   = @"portrait";
                        }
                    }

                    string bingMapsKey = GetBingMap(_privService);
                    string culture     = GetValue(_privService, @"BingMapCulture", @"en");
                    string pinType     = GetValue(_privService, @"PinType", @"0");

                    decimal?zoom        = DocGeneration.MapHelper.CheckZooming(propertyList.jll_mapzoom.IsNullToDecimal(), tracingService);
                    bool    autoZooming = (propertyList.jll_autozooming ?? true);
                    /*END OF */

                    string mapData = DocGeneration.MapHelper.GetMap(_longitudeNodes,
                                                                    _latitudeNodes,
                                                                    width, height, bingMapsKey, culture, zoom, autoZooming, null, null, pinType, null, _dataNodes, tracingService);

                    Annotation note = new Annotation()
                    {
                        AnnotationId = context.PrimaryEntityId,
                        Subject      = name, //string.Format("{0}/{1}", width, height),
                        IsDocument   = true,
                        DocumentBody = mapData,
                        FileName     = @"map.jpeg",
                        MimeType     = @"image/jpeg",
                        NoteText     = string.Format("{0} rows", rows.Entities.Count)
                    };
                    _privService.Update(note);
                }
            }
            catch (FaultException <OrganizationServiceFault> e)
            {
                tracingService.Trace("Exception: {0}", e.ToString());
                throw;
            }
            tracingService.Trace("Exiting GenerateNoteMapActivity.Execute(), Correlation Id: {0}", context.CorrelationId);
        }
Exemple #19
0
 public async Task <IWorkfalowActivityResult> Execute(IWorkflowContext context)
 {
     return(await _imp.Execute(this, context));
 }
        protected override void Execute(CodeActivityContext context)
        {
            int  duration = 0;
            int  firstReminderDuration  = 0;
            int  secondReminderDuration = 0;
            bool isRecurring            = false;

            string startDatevalue          = string.Empty;
            string endDatevalue            = string.Empty;
            string renewalDatevalue        = string.Empty;
            string firstReminderDatevalue  = string.Empty;
            string secondReminderDatevalue = string.Empty;

            DateTime endDate;
            DateTime renewalDate;
            DateTime firstReminderDate;
            DateTime secondReminderDate;

            log = new StringBuilder(string.Empty);

            IWorkflowContext            workFlowContext = context.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory factory         = context.GetExtension <IOrganizationServiceFactory>();

            _crmService = factory.CreateOrganizationService(null);

            serviceEntityId = workFlowContext.PrimaryEntityId;

            Entity serviceEntity = _crmService.Retrieve(CrmFields.ServiceLogicalName, serviceEntityId, new ColumnSet(true));

            if (serviceEntity.Contains(CrmFields.Recurring))
            {
                isRecurring = serviceEntity.GetAttributeValue <Boolean>(CrmFields.Recurring);
            }

            if (serviceEntity.Contains(CrmFields.Duration))
            {
                duration = serviceEntity.GetAttributeValue <OptionSetValue>(CrmFields.Duration).Value;
            }

            if (serviceEntity.Contains(CrmFields.FirstReminderDuration))
            {
                firstReminderDuration = serviceEntity.GetAttributeValue <Int32>(CrmFields.FirstReminderDuration);
            }

            if (serviceEntity.Contains(CrmFields.SecondReminderDuration))
            {
                secondReminderDuration = serviceEntity.GetAttributeValue <Int32>(CrmFields.SecondReminderDuration);
            }

            if (serviceEntity.Contains(CrmFields.StartDate))
            {
                startDatevalue = serviceEntity.GetAttributeValue <DateTime>(CrmFields.StartDate).ToString();
            }
            if (serviceEntity.Contains(CrmFields.EndDate))
            {
                endDatevalue = serviceEntity.GetAttributeValue <DateTime>(CrmFields.EndDate).ToString();
            }

            if (serviceEntity.Contains(CrmFields.RenewDate))
            {
                renewalDatevalue = serviceEntity.GetAttributeValue <DateTime>(CrmFields.RenewDate).ToString();
            }

            //if (serviceEntity.Contains(CrmFields.FirstReminderDate))
            //{
            //    firstReminderDatevalue = serviceEntity.GetAttributeValue<DateTime>(CrmFields.FirstReminderDate).ToString();
            //}

            //if (serviceEntity.Contains(CrmFields.SecondReminderDate))
            //{
            //    secondReminderDatevalue = serviceEntity.GetAttributeValue<DateTime>(CrmFields.SecondReminderDate).ToString();
            //}

            //Set renewal date
            //if (!string.IsNullOrEmpty(startDatevalue))
            //{
            //    switch (duration)
            //    {
            //        case  (int)CrmFields.DurationValues.Monthly :
            //            renewalDate = DateTime.Parse(startDatevalue).AddMonths(1);
            //            break;

            //        case (int)CrmFields.DurationValues.Bimonthly:
            //            renewalDate = DateTime.Parse(startDatevalue).AddMonths(2);
            //            break;

            //        case (int)CrmFields.DurationValues.Quarterly:
            //            renewalDate = DateTime.Parse(startDatevalue).AddMonths(3);
            //            break;

            //        case (int)CrmFields.DurationValues.Semiannually:
            //            renewalDate = DateTime.Parse(startDatevalue).AddMonths(6);
            //            break;

            //        case (int)CrmFields.DurationValues.Annually:
            //            renewalDate = DateTime.Parse(startDatevalue).AddMonths(12);
            //            break;
            //    }
            //}
            //else
            //{
            //    renewalDate = DateTime.Parse(renewalDatevalue).AddMonths(duration);
            //    //renewalDate = DateTime.Parse(renewalDatevalue).AddHours(duration);
            //}
            ////throw new NotImplementedException();

            //Set First Reminder Date
            endDate = DateTime.Parse(endDatevalue);
            if (firstReminderDuration != 0)
            {
                firstReminderDate = endDate.AddDays(-(firstReminderDuration));
                //firstReminderDate = renewalDate.AddMinutes(-(firstReminderDuration));
                serviceEntity[CrmFields.FirstReminderDate] = firstReminderDate;
                //FirstReminderDate.Set(context, firstReminderDate);
            }
            //Set Second Reminder Date
            if (secondReminderDuration != 0)
            {
                secondReminderDate = endDate.AddDays(-(secondReminderDuration));
                //secondReminderDate = renewalDate.AddMinutes(-(secondReminderDuration));
                serviceEntity[CrmFields.SecondReminderDate] = secondReminderDate;
                //SecondReminderDate.Set(context, secondReminderDate);
            }
            //serviceEntity[CrmFields.RenewDate] = renewalDate;

            //this.RenewalDate.Set(context, renewalDate);

            _crmService.Update(serviceEntity);
        }
        protected override void Execute(CodeActivityContext context)
        {
            try
            {
                // Get the context service.
                IWorkflowContext            Icontext       = context.GetExtension <IWorkflowContext>();
                IOrganizationServiceFactory serviceFactory = context.GetExtension <IOrganizationServiceFactory>();

                // Use the context service to create an instance of IOrganizationService.
                IOrganizationService service = serviceFactory.CreateOrganizationService(Icontext.InitiatingUserId);

                //get input fields
                var birthDate = Birthdate.Get(context) == new DateTime(0001, 01, 01) ? new DateTime(1753, 01, 01) : Birthdate.Get(context);
                var firstName = Firstname.Get(context);
                var lastName  = Lastname.Get(context);
                var userName  = Username.Get(context) == null ? "" : Username.Get(context);

                // made in fetchXML builder
                // Instantiate QueryExpression QEcontact
                var QEcontact = new QueryExpression("contact");

                // Add columns to QEcontact.ColumnSet
                QEcontact.ColumnSet.AddColumns("fullname", "firstname", "lastname", "birthdate", "sdu_brugernavn", "sdu_domne", "emailaddress1", "address1_city", "jobtitle", "sdu_crmomkostningssted", "sdu_brugernavn", "address1_line1");

                // Define filter QEcontact.Criteria // all must match birthdate + sdu_crmudlb + opdateret fra fim
                var QEcontact_Criteria = new FilterExpression();
                QEcontact.Criteria.AddFilter(QEcontact_Criteria);

                // Define filter QEcontact_Criteria // either match on username, or firstname + lastname
                QEcontact_Criteria.FilterOperator = LogicalOperator.Or;
                QEcontact_Criteria.AddCondition("sdu_brugernavn", ConditionOperator.Equal, userName);

                var QEcontact_Criteria_name = new FilterExpression();
                QEcontact_Criteria.AddFilter(QEcontact_Criteria_name);

                // Define filter QEcontact_Criteria_name_birthdate
                QEcontact_Criteria_name.AddCondition("firstname", ConditionOperator.Like, "%" + firstName + "%");
                QEcontact_Criteria_name.AddCondition("lastname", ConditionOperator.Like, "%" + lastName + "%");
                QEcontact_Criteria_name.AddCondition("birthdate", ConditionOperator.On, birthDate);

                var QEcontact_Criteria_state = new FilterExpression();
                QEcontact.Criteria.AddFilter(QEcontact_Criteria_state);

                // define filter QEcontact_Criteria_dates
                QEcontact_Criteria_state.AddCondition("statecode", ConditionOperator.Equal, RecordStatus.Get(context) == false ? 1 : 0);                            // kontoen er inaktiv
                QEcontact_Criteria_state.AddCondition("sdu_crmudlb", ConditionOperator.OnOrAfter, DateTime.Today.AddMonths(ExpirationDateLimit.Get(context) * -1)); // CRM udløb er maksimalt 13 måneder gammelt
                QEcontact_Criteria_state.AddCondition("sdu_crmudlb", ConditionOperator.OnOrBefore, DateTime.Today.AddDays(-1));                                     // CRM er igår eller før
                QEcontact_Criteria_state.AddCondition("jobtitle", ConditionOperator.NotLike, "%Studentermedhjælp%");

                //find records
                var queryResult = service.RetrieveMultiple(QEcontact);

                if (queryResult.Entities.Count == 1)
                {
                    foreach (var record in queryResult.Entities)
                    {
                        // fullname
                        FullnameOutput.Set(context, record.GetAttributeValue <string>("fullname"));

                        // contactid
                        ContactID.Set(context, record.GetAttributeValue <Guid>("contactid").ToString());

                        // omkostningssted
                        var omkStedIdLocal = SearchForRecord(service, "sdu_brugeradmomksted",
                                                             new KeyValuePair <string, string>("sdu_omksted", record.GetAttributeValue <EntityReference>("sdu_crmomkostningssted").Id.ToString()),
                                                             new KeyValuePair <string, string>("", ""),
                                                             "sdu_brugeradmomkstedid");

                        OmkStedId.Set(context, omkStedIdLocal);

                        // domæne
                        String[] seperator_domaene = { "_" };

                        if (omkStedIdLocal != "")
                        {
                            Domaene.Set(context, SearchForRecord(service,
                                                                 "sdu_domner",
                                                                 new KeyValuePair <string, string>("sdu_brugeradmomksted", omkStedIdLocal.Split(seperator_domaene, StringSplitOptions.RemoveEmptyEntries).GetValue(0).ToString()),
                                                                 new KeyValuePair <string, string>("sdu_name", record.GetAttributeValue <string>("sdu_domne")),
                                                                 "sdu_domnerid"));

                            // email domæne
                            String[] seperator_emailDomaene = { "@" };
                            var      emailDomainFromContact = "@" + record.GetAttributeValue <string>("emailaddress1").Split(seperator_emailDomaene, StringSplitOptions.RemoveEmptyEntries).GetValue(1).ToString();

                            EmailDomaene.Set(context, SearchForRecord(service,
                                                                      "sdu_emaildomne",
                                                                      new KeyValuePair <string, string>("sdu_brugeradmomksted", omkStedIdLocal.Split(seperator_domaene, StringSplitOptions.RemoveEmptyEntries).GetValue(0).ToString()),
                                                                      new KeyValuePair <string, string>("sdu_name", emailDomainFromContact.Replace(" ", "")), // remove whitespaces
                                                                      "sdu_emaildomneid"));
                        }
                        else
                        {
                            // set output parameters to empty strings, if no omk sted
                            Domaene.Set(context, "");
                            EmailDomaene.Set(context, "");
                        }

                        // lokation + arbejdsadresse
                        var LokationOptionSetValue = "";

                        switch (record.GetAttributeValue <string>("address1_city"))
                        {
                        case "Odense":
                            LokationOptionSetValue = "100000000";
                            break;

                        case "Odense M":
                            LokationOptionSetValue = "100000000";
                            break;

                        case "Odense C":
                            LokationOptionSetValue = "100000000";
                            break;

                        case "Sønderborg":
                            LokationOptionSetValue = "100000001";
                            break;

                        case "Esbjerg":
                            LokationOptionSetValue = "100000002";
                            break;

                        case "Slagelse":
                            LokationOptionSetValue = "100000003";
                            break;

                        case "Kolding":
                            LokationOptionSetValue = "100000004";
                            break;

                        default:
                            break;
                        }

                        var workAddress = record.GetAttributeValue <string>("address1_line1") == null ? "" : record.GetAttributeValue <string>("address1_line1");

                        if (workAddress.Contains("Campusvej"))
                        {
                            LokationOptionSetValue = LokationOptionSetValue + "_" + "100000000";
                        }
                        else if (workAddress.Contains("J.B. Winsløws Vej"))
                        {
                            LokationOptionSetValue = LokationOptionSetValue + "_" + "100000001";
                        }

                        Lokation.Set(context, LokationOptionSetValue);


                        // stillingsbetegnelse
                        StillingsBetegnelse.Set(context, SearchForRecord(service,
                                                                         "sdu_stikogruppe",
                                                                         new KeyValuePair <string, string>("sdu_name", record.GetAttributeValue <string>("jobtitle") == null ? "" : record.GetAttributeValue <string>("jobtitle")),
                                                                         new KeyValuePair <string, string>("", ""),
                                                                         "sdu_stikogruppeid"));


                        // fødselsdato
                        BirthDateOutput.Set(context, record.GetAttributeValue <DateTime>("birthdate") < new DateTime(1900, 01, 01) ? DateTime.Now : record.GetAttributeValue <DateTime>("birthdate"));

                        // brugernavn
                        UsernameOutput.Set(context, record.GetAttributeValue <string>("sdu_brugernavn"));
                    }
                }
                else
                {
                    FullnameOutput.Set(context, "");
                    ContactID.Set(context, "");
                    OmkStedId.Set(context, "");
                    Domaene.Set(context, "");
                    EmailDomaene.Set(context, "");
                    Lokation.Set(context, "");
                    StillingsBetegnelse.Set(context, "");
                    BirthDateOutput.Set(context, DateTime.Now);
                    UsernameOutput.Set(context, "");
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
        private void Process(CodeActivityContext executionContext, IWorkflowContext context, IOrganizationService service, OrganizationServiceContext orgContext)
        {
            trace.Trace("In Process function");

            trace.Trace("Process function ends");
        }
        /// <summary>
        /// Executes the workflow activity.
        /// </summary>
        /// <param name="executionContext">The execution context.</param>
        protected override void Execute(CodeActivityContext executionContext)
        {
            // Create the tracing service
            ITracingService tracingService = executionContext.GetExtension <ITracingService>();

            if (tracingService == null)
            {
                throw new InvalidPluginExecutionException("Failed to retrieve tracing service.");
            }

            tracingService.Trace("Entered CreateConfigXml.Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}",
                                 executionContext.ActivityInstanceId,
                                 executionContext.WorkflowInstanceId);

            // Create the context
            IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>();

            if (context == null)
            {
                throw new InvalidPluginExecutionException("Failed to retrieve workflow context.");
            }

            tracingService.Trace("CreateConfigXml.Execute(), Correlation Id: {0}, Initiating User: {1}",
                                 context.CorrelationId,
                                 context.InitiatingUserId);

            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            try
            {
                ConfigWRExists.Set(executionContext, true);
                string           ns            = Namespace.Get(executionContext);
                bool             traceEnable   = EnableTrace.Get(executionContext);
                XDocument        xDoc          = null;
                Guid             webresourceId = Guid.Empty;
                QueryByAttribute query         = new QueryByAttribute("webresource");
                query.AddAttributeValue("name", XML_WEBRESOURCE);
                query.AddAttributeValue("webresourcetype", 4);
                query.ColumnSet = new ColumnSet("name", "content");
                EntityCollection ec = service.RetrieveMultiple(query);

                #region Create or Update existing XML WebResource

                if (ec == null || ec.Entities.Count == 0)
                {
                    ConfigWRExists.Set(executionContext, false);
                    if (CreateConfigWR.Get(executionContext))
                    {
                        #region
                        xDoc = RetrieveEntityMetadata(service, ns: ns, traceEnable: traceEnable);
                        Entity xmlWebResource = new Entity("webresource");
                        xmlWebResource["name"]            = XML_WEBRESOURCE;
                        xmlWebResource["displayname"]     = "GenericHierarchyRollupXml.xml";
                        xmlWebResource["content"]         = Convert.ToBase64String(UnicodeEncoding.UTF8.GetBytes(xDoc.ToString()));
                        xmlWebResource["webresourcetype"] = new OptionSetValue(4);
                        webresourceId = service.Create(xmlWebResource);
                        ec.Entities.Add(xmlWebResource);
                        PublishWebResource(webresourceId, service);
                        #endregion
                    }
                }
                else if (RefreshConfig.Get <bool>(executionContext))
                {
                    #region
                    xDoc = RetrieveEntityMetadata(service, ns: ns, traceEnable: traceEnable);
                    bool      webResourceChanged = false;
                    byte[]    binary             = Convert.FromBase64String(ec.Entities[0].Attributes["content"].ToString());
                    XDocument xDocExisting       = XDocument.Parse(UnicodeEncoding.UTF8.GetString(binary));

                    foreach (XElement xe in xDoc.Root.Elements("entity"))
                    {
                        if (xDocExisting.Root.Elements("entity").Where(a => a.Attribute("ReferencingEntity").Value == xe.Attribute("ReferencingEntity").Value&& a.Attribute("ReferencingAttribute").Value == xe.Attribute("ReferencingAttribute").Value&& a.Attribute("ReferencedEntity").Value == xe.Attribute("ReferencedEntity").Value).Count() == 0)
                        {
                            xDocExisting.Root.Add(xe);
                            webResourceChanged = true;
                        }
                    }

                    if (webResourceChanged)
                    {
                        ec.Entities[0].Attributes["content"] = Convert.ToBase64String(UnicodeEncoding.UTF8.GetBytes(xDocExisting.ToString()));
                        service.Update(ec.Entities[0]);
                        PublishWebResource(ec.Entities[0].Id, service);
                    }
                    #endregion
                }
                #endregion

                if (!string.IsNullOrEmpty(EnabledItems.Get <string>(executionContext)))
                {
                    #region Set IsEnable
                    string[]  enabledItemList = EnabledItems.Get <string>(executionContext).Split(new char[] { ',' });
                    byte[]    binary          = Convert.FromBase64String(ec.Entities[0].Attributes["content"].ToString());
                    XDocument xDocExisting    = XDocument.Parse(UnicodeEncoding.UTF8.GetString(binary));
                    UpdateConfigXML(enabledItemList, xDocExisting, ns: ns, traceEnable: traceEnable);

                    ec.Entities[0].Attributes["content"] = Convert.ToBase64String(UnicodeEncoding.UTF8.GetBytes(xDocExisting.ToString()));
                    service.Update(ec.Entities[0]);

                    PublishWebResource(ec.Entities[0].Id, service);
                    #endregion
                }

                if (ec != null && ec.Entities.Count > 0)
                {
                    XDocument xDocData = XDocument.Parse(UnicodeEncoding.UTF8.GetString(Convert.FromBase64String(ec.Entities[0].Attributes["content"].ToString())));

                    Namespace.Set(executionContext, xDocData.Root.Attribute("HierarchyColumnNamespace").Value);
                    EnableTrace.Set(executionContext, string.Compare(xDocData.Root.Attribute("EnableTrace").Value, "true", true) == 0 ? true : false);

                    ConfigHtml.Set(executionContext, XmlToHtmlTransformation(service, xDocData));
                }
            }
            catch (FaultException <OrganizationServiceFault> e)
            {
                tracingService.Trace("Exception: {0}", e.ToString());

                // Handle the exception.
                throw;
            }

            tracingService.Trace("Exiting CreateConfigXml.Execute(), Correlation Id: {0}", context.CorrelationId);
        }
        protected override void Execute(CodeActivityContext executionContext)
        {
            //Create the tracing service
            ITracingService tracingService = executionContext.GetExtension <ITracingService>();

            //Create the context
            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
            {
                //Query for all active payment records
                QueryExpression query = new QueryExpression();
                query.EntityName = "revfinal_paymentrecord";
                query.ColumnSet  = new ColumnSet(new string[] { "revfinal_payment" });
                query.Criteria.AddCondition("statuscode", ConditionOperator.Equal, "Active");
                EntityCollection collection = service.RetrieveMultiple(query);

                //Queries updated APR value
                QueryExpression query2 = new QueryExpression();
                query.EntityName = "revfinal_configuration";
                query.ColumnSet  = new ColumnSet(new string[] { "revfinal_value" });
                query.Criteria.AddCondition("revfinal_name", ConditionOperator.Equal, "baseApr");
                EntityCollection collection2 = service.RetrieveMultiple(query2);

                Entity config = collection2.Entities[0];
                Double apr    = Convert.ToDouble(config.Attributes["revfinal_value"]);

                //Query margin value
                QueryExpression query3 = new QueryExpression();
                query.EntityName = "revfinal_configuration";
                query.ColumnSet  = new ColumnSet(new string[] { "revfinal_value" });
                query.Criteria.AddCondition("revfinal_name", ConditionOperator.Equal, "Margin");
                EntityCollection collection3 = service.RetrieveMultiple(query2);

                Entity config2 = collection3.Entities[0];
                Double margin  = Convert.ToDouble(config2.Attributes["revfinal_value"]);


                for (int i = 0; i < collection.TotalRecordCount; i++)
                {
                    //loop through all active payment records and update monthly payment
                    EntityReference mortgage = ((EntityReference)collection.Entities[0].Attributes["revfinal_mortgagerequestid"]);

                    Entity mortgageReq = service.Retrieve(mortgage.LogicalName, mortgage.Id, new ColumnSet(new string[] { "revfinal_contact", "revfinal_mortgageamount", "revfinal_mortgageterm" }));

                    string terms  = mortgageReq.Attributes["revfinal_mortgageterm"].ToString();
                    Double amount = Convert.ToDouble(mortgageReq.Attributes["revfinal_mortgageamount"]);

                    EntityReference contactRef = ((EntityReference)mortgageReq.Attributes["revfinal_contact"]);

                    Entity contact = service.Retrieve(contactRef.LogicalName, contactRef.Id, new ColumnSet(new string[] { "revfinal_riskscore", "address1_country", "address1_stateorprovince" }));

                    Double tax;

                    //Query for State tax or Country tax
                    if (contact.Attributes["address1_country"].ToString() == "Canada")
                    {
                        //Query for Canada's tax
                        QueryExpression query4 = new QueryExpression();
                        query.EntityName = "revfinal_configuration";
                        query.ColumnSet  = new ColumnSet(new string[] { "revfinal_value" });
                        query.Criteria.AddCondition("revfinal_name", ConditionOperator.Equal, "Canada");
                        EntityCollection collection4 = service.RetrieveMultiple(query4);

                        Entity config4 = collection4.Entities[0];
                        tax = Convert.ToDouble(config4.Attributes["revfinal_value"]);
                    }
                    else
                    {
                        //Query for Statetax using the Contact's state field
                        QueryExpression query4 = new QueryExpression();
                        query.EntityName = "revfinal_configuration";
                        query.ColumnSet  = new ColumnSet(new string[] { "revfinal_value" });
                        query.Criteria.AddCondition("revfinal_name", ConditionOperator.Equal, contact.Attributes["address1_stateorprovince"].ToString());
                        EntityCollection collection4 = service.RetrieveMultiple(query4);

                        Entity config4 = collection4.Entities[0];
                        tax = Convert.ToDouble(config4.Attributes["revfinal_value"]);
                    }
                    Double finalApr = Convert.ToDouble(((apr + margin) / 100) + Math.Log(Convert.ToDouble(contact.Attributes["revfinal_riskscore"]) + tax));

                    Double monthlyPayment = Convert.ToDouble((amount * (finalApr / 12)) / (1 - Math.Pow((1 + (finalApr / 12)), -(12 * Convert.ToDouble(terms)))));

                    collection.Entities[i].Attributes["revfinal_payment"] = monthlyPayment;

                    service.Update(collection.Entities[i]);
                }
            }
        }
        protected override async Task <IWorkfalowActivityResult> RealExecute(IList <object> inputParameters, IWorkflowContext context)
        {
            int    type       = (int)inputParameters[0];
            Guid   blockID    = (Guid)inputParameters[1];
            int    status     = (int)inputParameters[2];
            string actionName = (string)inputParameters[3];


            return(await Task.FromResult(new WorkflowActivityResultDefault()
            {
                GoTo = new WorkflowGoToResult()
                {
                    Type = type,
                    BlockID = blockID,
                    Status = status,
                    ActionName = actionName
                }
            }));
        }
Exemple #26
0
 protected abstract void Execute(CodeActivityContext activityContext, IWorkflowContext workflowContext, IOrganizationService orgService, ITracingService tracingService);
        protected override void Execute(CodeActivityContext executionContext)
        {
            ITracingService tracer = executionContext.GetExtension <ITracingService>();

            tracer.Trace("Inicialize context");
            IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>();

            //Create an Organization Service
            tracer.Trace("Inicialize serviceFactory");
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();

            tracer.Trace("Inicialize orgService");
            IOrganizationService orgService = serviceFactory.CreateOrganizationService(context.InitiatingUserId);

            //Registered Step Guid
            var pluginStepGuid = Guid.Empty;

            try
            {
                //Plugin Step object
                tracer.Trace("Inicialize pluginStep");
                CrmPluginStep pluginStep = new CrmPluginStep();

                pluginStep.PrimaryEntity = PrimaryEntity.Get <string>(executionContext);
                tracer.Trace("PrimaryEntity: " + pluginStep.PrimaryEntity);

                pluginStep.PluginAssemblyName = AssemblyName.Get <string>(executionContext);
                tracer.Trace("PluginAssemblyName: " + pluginStep.PluginAssemblyName);

                pluginStep.EventHandler = EventHandler.Get <string>(executionContext);
                tracer.Trace("EventHandler: " + pluginStep.EventHandler);

                pluginStep.Mode = Mode.Get <int>(executionContext);
                tracer.Trace("Mode: " + pluginStep.Mode);

                pluginStep.Rank = Rank.Get <int>(executionContext);
                tracer.Trace("Rank: " + pluginStep.Rank);

                pluginStep.FilteringAttributes = FilteringAttributes.Get <string>(executionContext);
                tracer.Trace("FilteringAttributes: " + pluginStep.FilteringAttributes);

                pluginStep.InvocationSource = InvocationSource.Get <int>(executionContext);
                tracer.Trace("InvocationSource: " + pluginStep.InvocationSource);

                pluginStep.Stage = Stage.Get <int>(executionContext);
                tracer.Trace("Stage: " + pluginStep.Stage);

                pluginStep.Deployment = Deployment.Get <int>(executionContext);
                tracer.Trace("Deployment: " + pluginStep.Deployment);

                pluginStep.Message = Message.Get <string>(executionContext);
                tracer.Trace("Message: " + pluginStep.Message);

                pluginStep.Name = pluginStep.EventHandler + ": " + pluginStep.Message + " of " + pluginStep.PrimaryEntity;
                tracer.Trace("Name: " + pluginStep.Name);

                pluginStep.tracer = tracer;

                tracer.Trace("--- Register Plugin Step --- ");
                //Register Step
                pluginStepGuid = pluginStep.RegisterPluginStep(ref orgService);

                tracer.Trace("pluginStepGuid: " + pluginStepGuid);
                PluginStepGuid.Set(executionContext, pluginStepGuid.ToString());
            }
            catch (Exception e)
            {
                throw new InvalidPluginExecutionException("(RegisterPluginStep) Error! " + e.Message);
            }
        }
Exemple #28
0
        internal static decimal RunCalculation(ITracingService tracingService, IWorkflowContext context, IOrganizationService service, Guid recordId)
        {
            tracingService.Trace("{0}{1}", "Regarding Record ID: ", recordId);

            var columns = new ColumnSet("caps_schooltype"
                                        , "caps_projecttype"
                                        , "caps_includenlc"
                                        , "caps_communitylocation"
                                        , "caps_municipalfees"
                                        , "caps_constructioncostsspir"
                                        , "caps_hostschooldistrict"
                                        , "caps_changeindesigncapacitykpositive"
                                        , "caps_changeindesigncapacityepositive"
                                        , "caps_changeindesigncapacityspositive"
                                        , "caps_changeindesigncapacityknegative"
                                        , "caps_changeindesigncapacityenegative"
                                        , "caps_changeindesigncapacitysnegative"
                                        , "caps_facility"
                                        , "caps_demolitioncost"
                                        , "caps_abnormaltopographycost"
                                        , "caps_temporaryaccommodationcost"
                                        , "caps_othercost"
                                        , "caps_schbadditionalspaceallocation");



            var projectRequestRecord = service.Retrieve(context.PrimaryEntityName, context.PrimaryEntityId, columns) as caps_Project;

            var projectTypeRecord = service.Retrieve(projectRequestRecord.caps_ProjectType.LogicalName, projectRequestRecord.caps_ProjectType.Id, new ColumnSet("caps_budgetcalculationtype")) as caps_ProjectType;

            var communityLocationRecord = service.Retrieve(projectRequestRecord.caps_CommunityLocation.LogicalName, projectRequestRecord.caps_CommunityLocation.Id, new ColumnSet("caps_projectlocationfactor")) as caps_BudgetCalc_CommunityLocation;

            var hostSchoolDistrictRecord = service.Retrieve(projectRequestRecord.caps_HostSchoolDistrict.LogicalName, projectRequestRecord.caps_HostSchoolDistrict.Id, new ColumnSet("caps_freightrateallowance")) as edu_schooldistrict;

            int adjustedDesignK = 0;
            int adjustedDesignE = 0;
            int adjustedDesignS = 0;

            if (projectRequestRecord.caps_Facility != null)
            {
                tracingService.Trace("Facility: {0}", projectRequestRecord.caps_Facility.Id);

                var facilityColumnSet = new ColumnSet("caps_designcapacitykindergarten"
                                                      , "caps_strongstartcapacitykindergarten"
                                                      , "caps_designcapacityelementary"
                                                      , "caps_strongstartcapacityelementary"
                                                      , "caps_designcapacitysecondary"
                                                      , "caps_strongstartcapacitysecondary");
                var facilityRecord = service.Retrieve(projectRequestRecord.caps_Facility.LogicalName, projectRequestRecord.caps_Facility.Id, new ColumnSet(true)) as caps_Facility;

                adjustedDesignK = (int)facilityRecord.caps_DesignCapacityKindergarten.GetValueOrDefault(0) + facilityRecord.caps_StrongStartCapacityKindergarten.GetValueOrDefault(0);
                adjustedDesignE = (int)facilityRecord.caps_DesignCapacityElementary.GetValueOrDefault(0) + facilityRecord.caps_StrongStartCapacityElementary.GetValueOrDefault(0);
                adjustedDesignS = (int)facilityRecord.caps_DesignCapacitySecondary.GetValueOrDefault(0) + facilityRecord.caps_StrongStartCapacitySecondary.GetValueOrDefault(0);
            }

            int increaseDesignK = (int)projectRequestRecord.caps_ChangeinDesignCapacityKPositive.GetValueOrDefault(0);
            int increaseDesignE = (int)projectRequestRecord.caps_ChangeinDesignCapacityEPositive.GetValueOrDefault(0);
            int increaseDesignS = (int)projectRequestRecord.caps_ChangeinDesignCapacitySPositive.GetValueOrDefault(0);

            int decreaseDesignK = (int)projectRequestRecord.caps_ChangeinDesignCapacityKNegative.GetValueOrDefault(0);
            int decreaseDesignE = (int)projectRequestRecord.caps_ChangeinDesignCapacityENegative.GetValueOrDefault(0);
            int decreaseDesignS = (int)projectRequestRecord.caps_ChangeinDesignCapacitySNegative.GetValueOrDefault(0);

            int subtotalDesignK = adjustedDesignK + decreaseDesignK;
            int subtotalDesignE = adjustedDesignE + decreaseDesignE;
            int subtotalDesignS = adjustedDesignS + decreaseDesignS;

            tracingService.Trace("CalculateScheduleB: {0}", "Populate Variable");

            var scheduleB = new ScheduleB(service, tracingService);

            //set parameters
            scheduleB.SchoolType            = projectRequestRecord.caps_SchoolType.Id;
            scheduleB.BudgetCalculationType = projectTypeRecord.caps_BudgetCalculationType.Value;
            scheduleB.IncludeNLC            = projectRequestRecord.caps_IncludeNLC.GetValueOrDefault(false);
            scheduleB.ProjectLocationFactor = communityLocationRecord.caps_ProjectLocationFactor.GetValueOrDefault(1);

            tracingService.Trace("Facility - K:{0} E:{1} S:{2}", adjustedDesignK, adjustedDesignE, adjustedDesignS);
            tracingService.Trace("Subtotal - K:{0} E:{1} S:{2}", subtotalDesignK, subtotalDesignE, subtotalDesignS);
            tracingService.Trace("Approved - K:{0} E:{1} S:{2}", subtotalDesignK + increaseDesignK, subtotalDesignE + increaseDesignE, subtotalDesignS + increaseDesignS);

            scheduleB.ExistingAndDecreaseDesignCapacity = new Services.DesignCapacity(subtotalDesignK, subtotalDesignE, subtotalDesignS);
            scheduleB.ExtraSpaceAllocation   = projectRequestRecord.caps_SchBAdditionalSpaceAllocation;
            scheduleB.ApprovedDesignCapacity = new Services.DesignCapacity(subtotalDesignK + increaseDesignK, subtotalDesignE + increaseDesignE, subtotalDesignS + increaseDesignS);

            scheduleB.MunicipalFees = projectRequestRecord.caps_MunicipalFees.GetValueOrDefault(0);
            //scheduleB.ConstructionNonStructuralSeismicUpgrade = projectRequestRecord.caps_ConstructionCostsNonStructuralSeismicUpgr;
            scheduleB.ConstructionSeismicUpgrade = projectRequestRecord.caps_ConstructionCostsSPIR;
            //scheduleB.ConstructionSPIRAdjustment = projectRequestRecord.caps_ConstructionCostsSPIRAdjustments;

            //scheduleB.SPIRFees = projectRequestRecord.caps_SeismicProjectIdentificationReportFees;

            scheduleB.FreightRateAllowance = hostSchoolDistrictRecord.caps_FreightRateAllowance.GetValueOrDefault(0);

            //Supplemental Items
            scheduleB.Demolition         = projectRequestRecord.caps_DemolitionCost.GetValueOrDefault(0);
            scheduleB.AbnormalTopography = projectRequestRecord.caps_AbnormalTopographyCost.GetValueOrDefault(0);
            scheduleB.TempAccommodation  = projectRequestRecord.caps_TemporaryAccommodationCost.GetValueOrDefault(0);
            scheduleB.OtherSupplemental  = projectRequestRecord.caps_OtherCost.GetValueOrDefault(0);

            //call Calculate
            tracingService.Trace("CalculateScheduleB: {0}", "Call Calculate Function");
            CalculationResult result = scheduleB.Calculate();

            //Update PRFS Option with Calculations
            var recordToUpdate = new caps_Project();

            recordToUpdate.Id = recordId;
            //Section 2
            recordToUpdate.caps_SchBSpaceAllocationNewReplacement = result.SpaceAllocationNewReplacement;
            recordToUpdate.caps_SchBTotalSpaceAllocation          = result.SpaceAllocationNewReplacement + projectRequestRecord.caps_SchBAdditionalSpaceAllocation.GetValueOrDefault(0);
            //recordToUpdate.caps_SchBSpaceAllocationNLC = result.SpaceAllocationNLC;

            //Section 3
            recordToUpdate.caps_SchBBaseBudgetRate        = result.BaseBudgetRate;
            recordToUpdate.caps_SchBProjectSizeFactor     = result.ProjectSizeFactor;
            recordToUpdate.caps_SchBProjectLocationFactor = result.ProjectLocationFactor;
            recordToUpdate.caps_SchBUnitRate = result.UnitRate;

            //Section 4
            recordToUpdate.caps_SchBConstructionNewSpaceReplacement  = result.ConstructionNewReplacement;
            recordToUpdate.caps_SchBConstructionRenovations          = result.ConstructionRenovation;
            recordToUpdate.caps_SchBSiteDevelopmentAllowance         = result.SiteDevelopmentAllowance;
            recordToUpdate.caps_SchBSiteDevelopmentLocationAllowance = result.SiteDevelopmentLocationAllowance;

            //Section 5
            recordToUpdate.caps_schbdesignfees = result.DesignFees;
            recordToUpdate.caps_SchBPostContractNewReplacement = result.PostContractNewReplacement;
            recordToUpdate.caps_SchBPostContractRenovations    = result.PostContractRenovation;
            recordToUpdate.caps_SchBPostContractSeismic        = result.PostContractSeismic;
            //recordToUpdate.caps_SchBMunicipalFees = result.MunicipalFees;
            recordToUpdate.caps_SchBEquipmentNew          = result.EquipmentNew;
            recordToUpdate.caps_SchBEquipmentReplacement  = result.EquipmentReplacement;
            recordToUpdate.caps_SchBProjectManagementFees = result.ProjectManagement;
            recordToUpdate.caps_SchBLiabilityInsurance    = result.LiabilityInsurance;
            recordToUpdate.caps_SchBPayableTaxes          = result.PayableTaxes;
            recordToUpdate.caps_SchBRiskReserve           = result.RiskReserve;
            recordToUpdate.caps_SchBRiskReservePercent    = result.RiskReservePercent;
            recordToUpdate.caps_SchBNLCBudgetAmount       = result.NLCBudgetAmount;

            service.Update(recordToUpdate);


            return(result.Total);
        }
Exemple #29
0
 public bool ShowUserSelect(IWorkflowContext context)
 {
     return(CanExitInner(context, false));
 }
Exemple #30
0
 public abstract bool Resolve(IWorkflowContext context);