Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="team"></param>
        /// <returns></returns>
        public OperationResult <ModelAnnotation> Create(ModelAnnotation ann)
        {
            OperationResult <ModelAnnotation> res;

            try
            {
                var tags = UpsertTags(ann);

                var entity = ann
                             .ToEntity()
                             .IncludeTags(tags)
                             .IncludeActiveOrgId(DataContext);

                DataContext.Add(entity);

                DataContext.SaveChanges();

                var model = entity
                            .UpdateId(ann)
                            .ToModel();

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

            return(res);
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        public void Update(ModelAnnotation ann, List <AnnotationTag> tags, bool patch)
        {
            if (patch)
            {
                UserId   = ann.UserId ?? UserId;
                Epoch    = ann.Time ?? Epoch;
                EpochEnd = ann.TimeEnd ?? EpochEnd;
                Text     = ann.Text ?? Text;

                if (null != tags)
                {
                    IncludeTags(tags);
                }
            }
            else
            {
                UserId   = ann.UserId;
                Epoch    = ann.Time ?? 0;
                EpochEnd = ann.TimeEnd ?? 0;
                Text     = ann.Text;

                IncludeTags(tags);
            }

            if (null != ann.Alert && 0 != ann.Alert.Id)
            {
                AlertId = ann.Alert?.Id;
                UserId  = null;
            }
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>^
        public ModelAnnotation ToModel()
        {
            var m = new ModelAnnotation()
            {
                Id     = Id,
                OrgId  = OrgId,
                UserId = UserId,

                DashboardId = DashboardId ?? 0,
                PanelId     = PanelId,
                Text        = Text,
                Title       = Title,
                Time        = Epoch,
                TimeEnd     = EpochEnd,
                Tags        = Tags?
                              .Select(x => x.AnnotationTag.Term)
                              .OrderBy(x => x)
                              .ToList(),
            };

            if (AlertId.HasValue && AlertId != 0)
            {
                m.Alert = new ModelAnnotation.AlertInfo()
                {
                    Id           = AlertId.Value,
                    PrevState    = PrevAlertState ?? ED.Alerts.AlertState.Unknown,
                    CurrentState = CurrentAlertState ?? ED.Alerts.AlertState.Unknown,
                    Data         = AlertData
                };
            }

            m.Bag.UserName = (null != User) ? User.Login : string.Empty;

            return(m);
        }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        public static Annotation ToEntity(this ModelAnnotation a)
        {
            return(new Annotation()
            {
                Id = a.Id,
                OrgId = a.OrgId,
                UserId = a.UserId,

                DashboardId = a.DashboardId,
                PanelId = a.PanelId,
                Text = a.Text,
                Title = a.Title,
                Epoch = a.Time ?? 0,
                EpochEnd = a.TimeEnd
            });
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ann"></param>
        /// <returns></returns>
        public OperationResult <ModelAnnotation> Update(ModelAnnotation ann, bool patch = false)
        {
            OperationResult <ModelAnnotation> res;

            try
            {
                var entity = DataContext
                             .Annotations
                             .ForActiveOrg()
                             .Include(x => x.Tags)
                             .ThenInclude(x => x.AnnotationTag)
                             .FirstOrDefault(x => x.Id == ann.Id);

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

                var tags = UpsertTags(ann);

                entity.Update(ann, tags, patch);

                DataContext.Update(entity);

                DataContext.SaveChanges();

                var model = entity
                            .UpdateId(ann)
                            .ToModel();

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

            return(res);
        }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tags"></param>
        private List <AnnotationTag> UpsertTags(ModelAnnotation ann)
        {
            var tags = ann?.Tags;
            var res  = new List <AnnotationTag>();

            if (null == tags)
            {
                return(null);
            }

            try
            {
                var existingTags = DataContext
                                   .AnnotationTags
                                   .Where(x => tags.Contains(x.Term))
                                   .ToList();

                var newTags = tags
                              .Where(t => null == existingTags.FirstOrDefault(x =>
                                                                              0 == string.Compare(x.Term, t, StringComparison.OrdinalIgnoreCase)))
                              .Select(x => new AnnotationTag(x))
                              .ToList();

                DataContext
                .AnnotationTags
                .AddRange(newTags);

                res = existingTags
                      .Union(newTags)
                      .ToList();;
            }
            catch
            { }

            return(res);
        }