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); }