Exemplo n.º 1
0
 public ActionResult Index(DashboardRequest request)
 {
     if ((request == null) ||
         (string.IsNullOrEmpty(request.CostCode)))
     {
         request = DashboardRequest.Default;
     }
     return View(request);
 }
Exemplo n.º 2
0
 public ActionResult PrintJpg(DashboardRequest request)
 {
     var model = new DashboardPrintModel
     {
         Summary = CreateSummary(request),
         Request = request
     };
     return PrintResult.PrintToJpeg("Print", model);
 }
Exemplo n.º 3
0
 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));
 }
Exemplo n.º 4
0
 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));
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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;
        }
Exemplo n.º 9
0
 private DashboardSummary CreateSummary(DashboardRequest request)
 {
     return request.Dimension == Dimension.ActivityGroup ? service.ActivityGroup(request) : service.CostCentre(request);
 }
Exemplo n.º 10
0
 public IEnumerable<CrumbNode> CostCentreTreeWalk(DashboardRequest request)
 {
     return context
         .CostCentreTreeWalk(request.CostCode)
         .Select(centre => new CrumbNode(centre.Name, request.ActivityGroupId, centre.CostCode));
 }
Exemplo n.º 11
0
 public virtual async Task<IHttpActionResult> CostCentre(DashboardRequest request)
 {
     var result = await Task.Run(() => service.CostCentreTreeWalk(request));
     return Ok(result);
 }
Exemplo n.º 12
0
 public virtual async Task<IHttpActionResult> ActivityGroup(DashboardRequest request)
 {
     var result = await Task.Run(() => service.ActivityGroupTreeWalk(request));
     return Ok(result);
 }