Exemplo n.º 1
0
        public async Task <DashboardModel> GetAsync(string Id, string requestId = "")
        {
            _logger.LogInformation($"RequestId: {requestId} - DashboardSvc_GetAsync called.");

            try
            {
                var dashboard = await _dashboardRepository.GetAsync(Id, requestId);

                Guard.Against.Null(dashboard, nameof(dashboard), requestId);

                var dashboardmodel = MapToModel(dashboard);

                return(dashboardmodel);
            }
            catch (Exception ex)
            {
                _logger.LogError($"RequestId: {requestId} - CategorySvc_GetAsync error: " + ex);
                throw;
            }
        }
        public async Task <Opportunity> UpdateWorkflowAsync(Opportunity opportunity, string requestId = "")
        {
            _logger.LogInformation($"RequestId: {requestId} - UpdateDashBoardEntryAsync called.");
            try
            {
                var dashboard = await _dashboardRepository.GetAsync(opportunity.DisplayName.ToString(), requestId);

                if (dashboard != null)
                {
                    dashboard.OpportunityId = opportunity.Id;
                    var date = DateTimeOffset.Now.Date;

                    if (dashboard.Status.ToLower() != opportunity.Metadata.OpportunityState.Name.ToLower())
                    {
                        dashboard.Status = opportunity.Metadata.OpportunityState.Name.ToString();
                        if (dashboard.Status.ToLower().ToString() == "accepted" || dashboard.Status.ToLower().ToString() == "archived")
                        {
                            dashboard.TargetCompletionDate = date.ToString();
                            dashboard.TotalNoOfDays        = GetDateDifference(DateTime.Parse(dashboard.StartDate.ToString()), date);
                        }
                    }

                    var oppCheckLists = opportunity.Content.Checklists.ToList();

                    foreach (var process in opportunity.Content.Template.ProcessList)
                    {
                        if (process.ProcessType.ToLower() == "checklisttab")
                        {
                            var checklistItm = oppCheckLists.Find(x => x.ChecklistChannel.ToLower() == process.Channel.ToLower());
                            if (checklistItm != null)
                            {
                                var dProcess = dashboard.ProcessList.ToList().Find(x => x.ProcessName.ToLower() == process.Channel.ToLower());
                                if (dProcess != null)
                                {
                                    if (checklistItm.ChecklistStatus == ActionStatus.Completed)
                                    {
                                        dProcess.ProcessEndDate = date.ToString();
                                        dProcess.NoOfDays       = GetDateDifference(DateTime.Parse(dProcess.ProcessStartDate), date);
                                    }
                                }
                                else
                                {
                                    dProcess                  = new DashboardProcessList();
                                    dProcess.ProcessName      = checklistItm.ChecklistChannel.ToLower();
                                    dProcess.ProcessStartDate = date.ToString();
                                    dProcess.NoOfDays         = 0;
                                    dashboard.ProcessList.Add(dProcess);
                                }

                                var processEndDateObj = dashboard.ProcessEndDateList.ToList().Find(x => x.Process.ToLower() == process.Channel.ToLower() + "enddate");
                                if (processEndDateObj != null)
                                {
                                    if (checklistItm.ChecklistStatus == ActionStatus.Completed)
                                    {
                                        processEndDateObj.EndDate = date.ToString();
                                    }
                                }
                                else
                                {
                                    processEndDateObj         = new DashboradProcessEndDateList();
                                    processEndDateObj.Process = checklistItm.ChecklistChannel.ToLower() + "enddate";
                                    processEndDateObj.EndDate = string.Empty;
                                    dashboard.ProcessEndDateList.Add(processEndDateObj);
                                }
                            }
                        }
                    }

                    var loanOfficerAdgroup = opportunity.Content.TeamMembers.FirstOrDefault(mem => mem.Fields.Permissions.Any(per => per.Name.ToLower() == "opportunity_readwrite_dealtype"));
                    if (loanOfficerAdgroup != null)
                    {
                        var obj = dashboard.ProcessLoanOfficerNames.ToList().Find(x => x.AdGroupName.ToLower() == loanOfficerAdgroup.RoleName.ToLower());
                        if (obj != null)
                        {
                            obj.OfficerName = loanOfficerAdgroup.DisplayName.ToString();
                        }
                    }

                    await _dashboardRepository.UpdateOpportunityAsync(dashboard, requestId);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"RequestId: {requestId} - UpdateDashBoardEntryAsync Service Exception: {ex}");
            }

            return(opportunity);
        }