public ActionResult Index(DashboardRequest request) { if ((request == null) || (string.IsNullOrEmpty(request.CostCode))) { request = DashboardRequest.Default; } return View(request); }
public ActionResult PrintJpg(DashboardRequest request) { var model = new DashboardPrintModel { Summary = CreateSummary(request), Request = request }; return PrintResult.PrintToJpeg("Print", model); }
public IEnumerable<CrumbNode> CostCentreChildren(DashboardRequest request) { var costCode = request.CostCode; return context .CostCentres .Where(centre => centre.ParentCostCentreCostCode == costCode) .OrderBy(centre => centre.OrderId) .ToArray() .Select(centre => new CrumbNode(centre.Name, request.ActivityGroupId, centre.CostCode)); }
public IEnumerable<CrumbNode> ActivityGroupChildren(DashboardRequest request) { var groupId = request.ActivityGroupId; if (groupId == null) { var configuration = SliceService.Configurations[request.Section]; var nodes = configuration .ActivityIds .Select(id => context.ActivityGroups.Find(id)) .Select(@group => new CrumbNode(@group.Name, @group.Id, request.CostCode)); return nodes; } return context .ActivityGroups .Where(@group => @group.ParentGroupId == groupId) .OrderBy(@group => @group.OrderId) .ToArray() .Select(@group => new CrumbNode(@group.Name, @group.Id, request.CostCode)); }
public IEnumerable<CrumbNode> ActivityGroupTreeWalk(DashboardRequest request) { var configuration = SliceService.Configurations[request.Section]; var terminalGuid = request.ActivityGroupId; var groups = context .ActivityGroupsTreeWalk(terminalGuid) .ToArray(); var initialNode = new CrumbNode(configuration.DisplayName, costCode: request.CostCode); var take = true; var nodes = groups .TakeWhile(@group => { if ((take) && (configuration.ActivityIds.Contains(@group.Id))) { take = false; return true; } return take; }) .Select(@group => new CrumbNode(@group.Name, @group.Id, request.CostCode)) .ToList(); nodes.Add(initialNode); return nodes; }
public DashboardSummary ActivityGroup(DashboardRequest request) { var costCentreRoot = context.CostCentres.Find(request.CostCode); IEnumerable<ActivityGroup> childGroups; ActivityGroup[] activities; var configuration = Configurations[request.Section]; if (request.ActivityGroupId == null) { activities = configuration .ActivityIds .Select(id => context.ActivityGroups.Find(id)) .ToArray(); var index = 1; childGroups = activities.Select(a => { a.OrderId = index*100; index++; return a; }); } else { var actvity = context.ActivityGroups.Find(request.ActivityGroupId); activities = new[] {actvity}; childGroups = actvity.ChildGroups; } var slices = childGroups .Select(a => new SliceDataModel { CentreNode = costCentreRoot.Node, Color = a.Color, CostCode = costCentreRoot.CostCode, Description = a.Description, OrderId = a.OrderId, Title = a.Name, ActivityGroupId = a.Id, ActivityGroupNode = a.Node, UomLong = a.UOMLong, UomShort = a.UOMShort }).ToArray(); return CreateSummary(request, slices, activities, costCentreRoot); }
public DashboardSummary CostCentre(DashboardRequest request) { var activity = (request.ActivityGroupId == null) ? null : context.ActivityGroups.Find(request.ActivityGroupId); var costCentreRoot = context.CostCentres.Find(request.CostCode); var slices = costCentreRoot .ChildrenCostCentres .Select(centre => { var returnModel = new SliceDataModel { CentreNode = centre.Node, Color = centre.Color, CostCode = centre.CostCode, Description = centre.Description, OrderId = centre.OrderId, Title = centre.Name }; if (activity == null) return returnModel; returnModel.ActivityGroupId = activity.Id; returnModel.ActivityGroupNode = activity.Node; returnModel.UomLong = activity.UOMLong; returnModel.UomShort = activity.UOMShort; return returnModel; }).ToArray(); if (!slices.Any()) { slices = new[] { new SliceDataModel { CentreNode = costCentreRoot.Node, Color = costCentreRoot.Color, CostCode = costCentreRoot.CostCode, Description = costCentreRoot.Description, OrderId = costCentreRoot.OrderId, Title = costCentreRoot.Name } }; if (activity != null) { slices[0].ActivityGroupId = activity.Id; slices[0].ActivityGroupNode = activity.Node; slices[0].UomLong = activity.UOMLong; slices[0].UomShort = activity.UOMShort; } } if (activity != null) return CreateSummary(request, slices, new[] {activity}, costCentreRoot); var configuration = Configurations[request.Section]; var activities = configuration.ActivityIds.Select(guid => context.ActivityGroups.Find(guid)).ToArray(); return CreateSummary(request, slices, activities, costCentreRoot); }
public DashboardSummary CreateSummary( DashboardRequest request, SliceDataModel[] sliceData, ActivityGroup[] activities, CostCentre centre) { var configuration = Configurations[request.Section]; var uomLong = string.Empty; var showCo2 = false; var groupNodes = activities.Select(a => a.Node).ToArray(); var summary = new DashboardSummary { costCentre = centre.Name, activityGroup = (request.ActivityGroupId == null) ? configuration.DisplayName : activities[0].Name, displayTotal = true }; var slices = sliceData .OrderBy(s => s.OrderId) .Select(s => { var slice = new SliceModel { activityGroupId = s.ActivityGroupId, color = s.Color, costCode = s.CostCode, description = s.Description, title = s.Title, sliceId = CreateSliceId(s.ActivityGroupId, s.CostCode), }; var noUnits = (string.IsNullOrEmpty(s.UomShort)) || (string.IsNullOrEmpty(s.UomLong)); if (configuration.ShowCo2 || noUnits) { showCo2 = true; slice.co2label = Constants.Constants.Co2LabelShort; slice.amount = GetTotal( TotalEmissions, request.StartDate, request.EndDate, s.ActivityGroupNode, s.CentreNode, groupNodes)/1000; } if (configuration.ShowCo2 && !noUnits) { slice.uom = s.UomShort; slice.units = GetTotal( TotalUnits, request.StartDate, request.EndDate, s.ActivityGroupNode, s.CentreNode, groupNodes); } if (!configuration.ShowCo2 && !noUnits) { slice.co2label = s.UomShort; uomLong = s.UomLong; slice.amount = GetTotal( TotalUnits, request.StartDate, request.EndDate, s.ActivityGroupNode, s.CentreNode, groupNodes); } return slice; }).ToArray(); decimal lastYearTotal; decimal totalAmount; if (showCo2) { totalAmount = GetTotal( TotalEmissions, request.StartDate, request.EndDate, null, centre.Node, groupNodes)/1000; lastYearTotal = GetTotal( TotalEmissions, request.StartDate.AddYears(-1), request.EndDate.AddYears(-1), null, centre.Node, groupNodes)/1000; } else { totalAmount = GetTotal( TotalUnits, request.StartDate, request.EndDate, null, centre.Node, groupNodes); lastYearTotal = GetTotal( TotalUnits, request.StartDate.AddYears(-1), request.EndDate.AddYears(-1), null, centre.Node, groupNodes); } var yoy = (lastYearTotal == 0) ? 0 : ((totalAmount - lastYearTotal)/lastYearTotal)*100; var currencies = GetCurrencies( request.StartDate, request.EndDate, groupNodes, centre.Node); summary.co2label = (showCo2) ? Constants.Constants.Co2LabelLong : uomLong; summary.currencies = currencies; summary.slices = slices; summary.total = totalAmount; summary.yoy = yoy; return summary; }
private DashboardSummary CreateSummary(DashboardRequest request) { return request.Dimension == Dimension.ActivityGroup ? service.ActivityGroup(request) : service.CostCentre(request); }
public IEnumerable<CrumbNode> CostCentreTreeWalk(DashboardRequest request) { return context .CostCentreTreeWalk(request.CostCode) .Select(centre => new CrumbNode(centre.Name, request.ActivityGroupId, centre.CostCode)); }
public virtual async Task<IHttpActionResult> CostCentre(DashboardRequest request) { var result = await Task.Run(() => service.CostCentreTreeWalk(request)); return Ok(result); }
public virtual async Task<IHttpActionResult> ActivityGroup(DashboardRequest request) { var result = await Task.Run(() => service.ActivityGroupTreeWalk(request)); return Ok(result); }