Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="team"></param>
        /// <returns></returns>
        public OperationResult <ModelFolder> Update(string uid, ModelFolder f)
        {
            OperationResult <ModelFolder> res;

            try
            {
                var entity = DataContext
                             .Folders
                             .ForActiveOrg()
                             .FirstOrDefault(x => x.Uid == uid);

                if (null == entity)
                {
                    return(OperationResult <ModelFolder> .Create(ErrorCode.BadGetFolder));
                }

                entity.Update(f);

                if (ExpandoHelper.GetProperty <bool>(f, "Overwrite"))
                {
                    var v = f.Bag.Version;

                    var currentVersion = ( int )DataContext
                                         .Entry(entity)
                                         .Property(DataContext.COL_VERSION)
                                         .CurrentValue;

                    if (currentVersion != v)
                    {
                        return(OperationResult <ModelFolder> .Create(ErrorCode.BadUpdateFolderVersionMismatch));
                    }
                }

                DataContext.Update(entity);

                DataContext.SaveChanges();

                var model = entity
                            .UpdateId(f)
                            .ToModel()
                            .AddTime(DataContext.Entry(entity))
                            .AddVersion(DataContext.Entry(entity));

                res = OperationResult <ModelFolder> .Create(model);
            }
            catch (Exception e)
            {
                res = OperationResult <ModelFolder> .Create(ErrorCode.BadUpdateFolder, e);
            }

            return(res);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="d"></param>
        /// <returns></returns>
        public OperationResult <ModelDashboard> Create(ModelDashboard d)
        {
            OperationResult <ModelDashboard> res;

            try
            {
                var existing = DataContext
                               .Dashboards
                               .ForActiveOrg()
                               .FirstOrDefault(x =>
                                               x.Title == d.Title &&
                                               d.FolderId == x.FolderId);

                if (null != existing)
                {
                    if (!ExpandoHelper.GetProperty <bool>(d, "Overwrite"))
                    {
                        return(OperationResult <ModelDashboard> .Create(ErrorCode.BadCreateDashboardDuplicate));
                    }

                    DataContext.Dashboards.Remove(existing);
                }

                var entity = d
                             .ToEntity(DataContext)
                             .IncludeActiveOrgId(DataContext);

                entity.Versions.Add(new DashboardVersion(d));

                DataContext.Add(entity);

                DataContext.SaveChanges();

                var model = entity
                            .UpdateId(d)
                            .ToModel()
                            .AddTime(DataContext.Entry(entity))
                            .AddVersion(DataContext.Entry(entity));

                res = OperationResult <ModelDashboard> .Create(model);
            }
            catch (Exception e)
            {
                res = OperationResult <ModelDashboard> .Create(ErrorCode.BadCreateDashboard, e);
            }

            return(res);
        }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        public DashboardVersion(ModelDashboard d)
        {
            DashboardId = d.Id;

            var version = ExpandoHelper.GetProperty <int>(d, "Version");
            var userId  = ExpandoHelper.GetProperty <int>(d, "UserId");

            var message = ExpandoHelper.HasProperty(d, "Message") ?
                          d.Bag.Message : string.Empty;

            Version       = version + 1;
            ParentVersion = version;
            RestoredFrom  = 0;

            Message = (string.IsNullOrEmpty(d.Uid)) ? "Initial save" : message;
            Data    = d.Data;

            UserId = userId;
        }
Esempio n. 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="d"></param>
        /// <returns></returns>
        public OperationResult <ModelDashboard> Update(ModelDashboard d)
        {
            OperationResult <ModelDashboard> res;

            try
            {
                var entity = DataContext
                             .Dashboards
                             .ForActiveOrg()
                             .Include(x => x.Tags)
                             .Include(x => x.Alerts)
                             .FirstOrDefault(x => x.Uid == d.Uid);

                if (null == entity)
                {
                    return(OperationResult <ModelDashboard> .Create(ErrorCode.BadGetDashboard));
                }

                var existing = DataContext
                               .Dashboards
                               .ForActiveOrg()
                               .FirstOrDefault(x =>
                                               x.Title == d.Title &&
                                               d.FolderId == x.FolderId &&
                                               x.Uid != d.Uid);

                if (null != existing)
                {
                    if (!ExpandoHelper.GetProperty <bool>(d, "Overwrite"))
                    {
                        return(OperationResult <ModelDashboard> .Create(ErrorCode.BadCreateDashboardDuplicate));
                    }

                    DataContext.Dashboards.Remove(existing);
                }

                var currentVersion = ( int )DataContext
                                     .Entry(entity)
                                     .Property(DataContext.COL_VERSION)
                                     .CurrentValue;

                DataContext
                .Entry(entity)
                .State = EntityState.Modified;

                if (currentVersion > ExpandoHelper.GetProperty <int>(d, "Version"))
                {
                    return(OperationResult <ModelDashboard> .Create(ErrorCode.BadUpdateDashboardVersionMismatch));
                }

                entity.Update(DataContext, d);

                DataContext.SaveChanges();

                var model = entity
                            .ToModel()
                            .AddTime(DataContext.Entry(entity))
                            .AddVersion(DataContext.Entry(entity));

                res = OperationResult <ModelDashboard> .Create(model);
            }
            catch (AlertValidationException e)
            {
                res = OperationResult <ModelDashboard> .Create(ErrorCode.BadUpdateDashboardValidation, e);
            }
            catch (Exception e)
            {
                res = OperationResult <ModelDashboard> .Create(ErrorCode.BadUpdateDashboard, e);
            }

            return(res);
        }