public async Task <ActionResult> Index() { HomeViewModel model = new HomeViewModel(); List <EndpointEntities> endpoints = await(new nuDirectApiController().GetAllEndpoints()); List <FolderEntities> folders = await(new nuDirectApiController().GetAllFolders()); List <TransferEntities> transfers = await(new nuDirectApiController().GetAllTransfers(DateTime.Now.AddDays(Convert.ToInt32(ConfigurationManager.AppSettings["DashboardDateRange"]) * -1), DateTime.Now)); model.Endpoints = endpoints; model.TwentyFourHourTransfersCount = transfers.Where(x => x.Started > DateTime.Now.AddHours(-24)).Count(); model.WaitingTransfersCount = transfers.Where(x => x.CurrentStatus == 2).Count(); model.CostCenterCount = folders.Select(x => x.CostCentreCode).Distinct().Count(); StringBuilder tenHourTransfersSb = new StringBuilder(); for (int i = 10; i > 0; i--) { tenHourTransfersSb.Append(transfers.Where(x => x.Started > DateTime.Now.AddHours(i * -1) && x.Started < DateTime.Now.AddHours((i - 1) * -1)).Count()); tenHourTransfersSb.Append(","); } model.TenHourTransfers = tenHourTransfersSb.ToString().TrimEnd(','); model.ThreeDayTransferCounts = new int[3]; for (int i = 2; i > -1; i--) { model.ThreeDayTransferCounts[i] = transfers.Where(x => x.Started > DateTime.Now.AddDays((i + 1) * -1) && x.Started < DateTime.Now.AddDays(i * -1)).Count(); } model.MostActiveCostCenters = new List <CostCenterCountModel>(); int[] sourceFolders = transfers.Select(x => x.SourceFolderId).Distinct().ToArray(); foreach (int i in sourceFolders) { FolderEntities currentFolder = folders.FirstOrDefault(z => z.FolderId == i); int costCenterCount = transfers.Where(x => x.SourceFolderId == i).Count(); if (string.IsNullOrEmpty(currentFolder.CostCentreCode)) { continue; } if (model.MostActiveCostCenters.Where(x => x.CostCenterName == currentFolder.CostCentreCode).Count() == 0) { model.MostActiveCostCenters.Add(new CostCenterCountModel() { CostCenterName = currentFolder.CostCentreCode, CostCenterCount = costCenterCount }); } else { model.MostActiveCostCenters.FirstOrDefault(x => x.CostCenterName == currentFolder.CostCentreCode).CostCenterCount += costCenterCount; } } model.MostActiveCostCenters = model.MostActiveCostCenters.OrderByDescending(x => x.CostCenterCount).Take(3).ToList(); model.TransfersByStatus = new int[3]; model.TransfersByStatus[0] = transfers.Where(x => x.CurrentStatus == 9).Count(); model.TransfersByStatus[1] = transfers.Where(x => x.CurrentStatus == 2).Count(); model.TransfersByStatus[2] = transfers.Where(x => x.CurrentStatus == 99).Count(); return(View(model)); }
public async Task <ActionResult> TransfersByEntity(string StartDate, string EndDate, string EntityType) { if (string.IsNullOrEmpty(EntityType)) { return(View(new List <EntityTransferCountModel>())); } List <EntityTransferCountModel> transferCounts = new List <EntityTransferCountModel>(); List <TransferEntities> transfers = (await new nuDirectApiController().GetAllTransfers()).Where(x => x.Started > DateTime.Parse(StartDate) && x.Started < DateTime.Parse(EndDate).AddDays(1)).ToList(); if (EntityType == "Customer") { List <CustomerEntities> customers = await new nuDirectApiController().GetAllCustomers(); List <EndpointEntities> endpoints = await new nuDirectApiController().GetAllEndpoints(); int[] sourceEndpoints = transfers.Select(x => x.SourceEpId).Distinct().ToArray(); foreach (int i in sourceEndpoints) { EndpointEntities currentEndpoint = endpoints.FirstOrDefault(z => z.EndpointId == i); int endpointCount = transfers.Where(x => x.SourceEpId == i).Count(); if (transferCounts.Where(x => x.EntityName == currentEndpoint.customer.Company).Count() == 0) { transferCounts.Add(new EntityTransferCountModel() { EntityName = currentEndpoint.customer.Company, EntityCount = endpointCount }); } else { transferCounts.FirstOrDefault(x => x.EntityName == currentEndpoint.customer.Company).EntityCount += endpointCount; } } } else if (EntityType == "CostCenter") { List <FolderEntities> folders = await new nuDirectApiController().GetAllFolders(); int[] sourceFolders = transfers.Select(x => x.SourceFolderId).Distinct().ToArray(); foreach (int i in sourceFolders) { FolderEntities currentFolder = folders.FirstOrDefault(z => z.FolderId == i); int FolderCount = transfers.Where(x => x.SourceFolderId == i).Count(); if (transferCounts.Where(x => x.EntityName == currentFolder.CostCentreCode).Count() == 0) { transferCounts.Add(new EntityTransferCountModel() { EntityName = currentFolder.CostCentreCode, EntityCount = FolderCount }); } else { transferCounts.FirstOrDefault(x => x.EntityName == currentFolder.CostCentreCode).EntityCount += FolderCount; } } } else { List <CustomerEntities> customers = await new nuDirectApiController().GetAllCustomers(); List <EndpointEntities> endpoints = await new nuDirectApiController().GetAllEndpoints(); int[] sourceEndpoints = transfers.Select(x => x.SourceEpId).Distinct().ToArray(); foreach (int i in sourceEndpoints) { EndpointEntities currentEndpoint = endpoints.FirstOrDefault(z => z.EndpointId == i); int endpointCount = transfers.Where(x => x.SourceEpId == i).Count(); if (transferCounts.Where(x => x.EntityName == currentEndpoint.customer.BusinessUnit).Count() == 0) { transferCounts.Add(new EntityTransferCountModel() { EntityName = currentEndpoint.customer.BusinessUnit, EntityCount = endpointCount }); } else { transferCounts.FirstOrDefault(x => x.EntityName == currentEndpoint.customer.BusinessUnit).EntityCount += endpointCount; } } } return(View(transferCounts)); }