コード例 #1
0
        public DashboardComplex ConvertToDALEntity(ApiDashboard businessEntity)
        {
            var result1 = new DalDashboard(businessEntity.Id, businessEntity.User.Id, businessEntity.Name, businessEntity.IsVisible, businessEntity.Order);

            result1.IsDirty           = businessEntity.IsDirty;
            result1.IsMarkForDeletion = businessEntity.IsMarkForDeletion;

            var result2 = new List <DalDashboardFilterRelation>();

            for (int i = 0; i < businessEntity.Relations.Count; i++)
            {
                ApiDashboardFilterRelation relation = businessEntity.Relations[i];
                if (relation.Filter != null && relation.Filter is ApiFilter)
                {
                    var tmp = new DalDashboardFilterRelation(relation.Id, businessEntity.Id, (relation.Filter as ApiFilter).Id, null, relation.IsVisible, relation.Order);
                    tmp.IsDirty           = relation.IsDirty;
                    tmp.IsMarkForDeletion = relation.IsMarkForDeletion;
                    result2.Add(tmp);
                }
                if (relation.Filter != null && relation.Filter is ApiDashboard)
                {
                    var tmp = new DalDashboardFilterRelation(relation.Id, businessEntity.Id, null, (relation.Filter as ApiDashboard).Id, relation.IsVisible, relation.Order);
                    tmp.IsDirty           = relation.IsDirty;
                    tmp.IsMarkForDeletion = relation.IsMarkForDeletion;
                    result2.Add(tmp);
                }
            }

            return(new DashboardComplex(result1, result2));
        }
コード例 #2
0
        public ApiDashboard ConvertToApiEntity(DalDashboard dataEntity)
        {
            var result = new ApiDashboard(dataEntity.Id, _user, dataEntity.Name, dataEntity.IsVisible, dataEntity.Order);

            result.IsDirty           = dataEntity.IsDirty;
            result.IsMarkForDeletion = dataEntity.IsMarkForDeletion;
            return(result);
        }
コード例 #3
0
        private void DeleteDashboard(ApiDashboard dashboard)
        {
            var tmp = DashboardMapper.ConvertToDALEntity(dashboard);

            foreach (var relation in tmp.Relations)
            {
                DashboardFilterRelationAdapter.Delete(relation.Id);
            }
            DashboardAdapter.Delete(tmp.Dashboard.Id);
        }
コード例 #4
0
        private IDashboardOutput GenerateDashboardOutput(ApiDashboard dashboard, List <IApiOperation> iOperations)
        {
            var root = new DashboardOutput();

            root.Name = dashboard.Name;
            var generator = new DashboardOutputGenerator();

            generator.Generate(ref root, dashboard, iOperations);

            return(root);
        }
コード例 #5
0
        public IActionResult Dashboard([FromQuery] ApiDashboardSearchParams dashParams)
        {
            // get all variable outgoings
            var now  = DateTime.UtcNow;
            var from = now;

            switch (dashParams.Range)
            {
            case DashboardRange.SevenDays:
                from = now.AddDays(-7);
                break;

            case DashboardRange.OneMonth:
                from = now.AddMonths(-1);
                break;

            case DashboardRange.ThreeMonths:
                from = now.AddMonths(-3);
                break;

            case DashboardRange.OneYear:
                from = now.AddYears(-1);
                break;

            default:
                from = now.AddDays(-7);
                break;
            }

            var dates = Enumerable.Range(0, (int)(now - from).TotalDays).Select(x => DateTime.UtcNow.AddDays(-x)).OrderBy(x => x);

            var model = new ApiDashboard
            {
                Labels = dates.Select(x => x.ToString("dd/MM/yyyy")).ToList()
            };

            var transactions = _uow.Transactions.GetAll()
                               .Where(t => t.UserId == Token.UserId)
                               .Where(t => t.Category.Type != CategoryType.Income)
                               .Where(t => t.Date >= from)
                               .Where(t => t.Date <= now)
                               .GroupBy(t => t.CategoryId)
                               .ToList();

            model.Datasets = transactions.Select(ts =>
            {
                return(GetDataset(dates, ts));
            })
                             .ToList();

            return(new JsonResult(model));
        }
コード例 #6
0
        private void InsertDashboard(ref ApiDashboard dashboard)
        {
            var tmp = DashboardMapper.ConvertToDALEntity(dashboard);

            var idx = DashboardAdapter.Insert(tmp.Dashboard);

            dashboard.UpdateId(idx);
            foreach (var relation in tmp.Relations)
            {
                relation.UpdateDashboardId(idx);
                DashboardFilterRelationAdapter.Insert(relation);
            }
        }
コード例 #7
0
 public void UpdateDashboardComplex(ref ApiDashboard dashboard)
 {
     if (dashboard.IsMarkForDeletion)
     {
         DeleteDashboard(dashboard);
     }
     else if (dashboard.IsDirty && dashboard.Id == null)
     {
         InsertDashboard(ref dashboard);
     }
     else if (dashboard.IsDirty)
     {
         UpdateDashboard(dashboard);
     }
 }
コード例 #8
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var        jsonObject = JObject.Load(reader);
            IApiFilter iFilter;

            if (jsonObject["Relations"] != null)
            {
                iFilter = new ApiDashboard();
            }
            else
            {
                iFilter = new ApiFilter();
            }

            serializer.Populate(jsonObject.CreateReader(), iFilter);
            return(iFilter);
        }
コード例 #9
0
 public void Generate(ref DashboardOutput input, ApiDashboard dashboard, List <IApiOperation> operations)
 {
     foreach (var relation in dashboard.Relations)
     {
         if (relation.Filter is ApiFilter)
         {
             var filter = relation.Filter as ApiFilter;
             var tmp    = new DashboardOutputLeaf();
             tmp.Name   = filter.Name;
             tmp.Result = _analyzer.Run(filter, operations);
             input.Children.Add(tmp);
         }
         else
         {
             var innerDashboard = relation.Filter as ApiDashboard;
             var tmp            = new DashboardOutput();
             tmp.Name = innerDashboard.Name;
             input.Children.Add(tmp);
             Generate(ref tmp, innerDashboard, operations);
         }
     }
 }
コード例 #10
0
        public DalDashboardFilterRelation ConvertToDALEntity(ApiDashboardFilterRelation businessEntity, ApiDashboard source, ApiDashboardFilterRelation next)
        {
            int?filterId    = null;
            int?dashboardId = null;

            if (businessEntity.Filter is ApiFilter)
            {
                filterId = (businessEntity.Filter as ApiFilter).Id;
            }
            else
            {
                dashboardId = (businessEntity.Filter as ApiDashboard).Id;
            }

            var result = new DalDashboardFilterRelation(businessEntity.Id, source.Id, filterId, dashboardId, businessEntity.IsVisible, businessEntity.Order);

            result.IsDirty           = businessEntity.IsDirty;
            result.IsMarkForDeletion = businessEntity.IsMarkForDeletion;

            return(result);
        }
コード例 #11
0
        public IEnumerable <DalDashboardFilterRelation> ConvertToDALEntitiesCollection(IEnumerable <ApiDashboardFilterRelation> dataEntities, ApiDashboard source)
        {
            var result = new List <DalDashboardFilterRelation>();

            for (var i = 0; i < dataEntities.Count(); ++i)
            {
                var item = dataEntities.ElementAt(i);
                var next = (i + 1) < dataEntities.Count()?dataEntities.ElementAt(i + 1):null;
                result.Add(ConvertToDALEntity(item, source, next));
            }

            return(result);
        }
コード例 #12
0
 private void UpdateDashboard(ref ApiDashboard dashboard)
 {
     _apiAdapter.UpdateDashboardComplex(ref dashboard);
 }