예제 #1
0
        protected virtual void FillChangeColumns(ChangeLists lst)
        {
            if (!UseChangeColumns)
            {
                return;
            }
            long?userId = _provider.GetCurrentUser()?.GetUserIdAsLong();

            foreach (IChangeColumns mod in lst.Added)
            {
                if (userId != null)
                {
                    mod.CreatedBy = userId;
                    mod.UpdatedBy = userId;
                }

                mod.CreatedOn = DateTime.Now;
                mod.UpdatedOn = DateTime.Now;
            }

            foreach (IChangeColumns mod in lst.Updated)
            {
                if (userId != null)
                {
                    mod.UpdatedBy = userId;
                }
                mod.UpdatedOn = DateTime.Now;
            }
        }
예제 #2
0
 public void OnChangelistUpdated(object Sender, P4ScmProvider.ChangelistUpdateArgs Args)
 {
     if (Args.ChanglistId == ChangeLists.ActiveChangeList)
     {
         if ((Args.Action == P4ScmProvider.ChangelistUpdateArgs.UpdateType.Delete) ||
             (Args.Action == P4ScmProvider.ChangelistUpdateArgs.UpdateType.Submitted))
         {
             ChangeLists.SetActiveChangeList(0);
         }
     }
 }
예제 #3
0
        /// <summary>
        /// Attempts to submit changes to the data source
        /// </summary>
        /// <returns>if success <see cref="SubmitResult.Code"/> is 0</returns>
        public override SubmitResult SaveChanges(string successMessage = null, string failMessage = null)
        {
            SubmitResult res     = new SubmitResult();
            string       def     = Strings.Word(MessageIds.success_message);
            string       defFail = Strings.Word(MessageIds.fail_message);

            successMessage = successMessage ?? def;
            failMessage    = failMessage ?? defFail;

            ChangeLists lst = null;

            if (OnBeforeSave != null || OnSaveSuccess != null || Saving != null || UseChangeColumns)
            {
                lst = GetChangeSet();
                OnBeforeSave?.Invoke(lst);
                Saving?.Invoke(this, lst);
                FillChangeColumns(lst);
            }

            try
            {
                int rows = DbContext.SaveChanges();

                res = new SubmitResult
                {
                    AffectedRows = rows,
                    Code         = 0,
                    Message      = successMessage
                };

                try
                {
                    OnSaveSuccess?.Invoke(lst);
                }
                catch (Exception ex)
                {
                    res.SetException(ex);
                    res.Code = 0;
                }
            }
            catch (Exception ex)
            {
                res = CustomizeException(ex, failMessage);
            }
            return(res);
        }
예제 #4
0
        /// <summary>
        /// Attempts to submit changes to the data source
        /// </summary>
        /// <returns>if success <see cref="SubmitResult.Code"/> is 0</returns>
        public virtual SubmitResult SaveChanges(string successMessage = null, string failMessage = null)
        {
            SubmitResult res = new SubmitResult();

            successMessage = successMessage == null?Strings.Word(MessageIds.success_message) : successMessage;

            failMessage = failMessage == null?Strings.Word(MessageIds.fail_message) : failMessage;

            ChangeLists lst = null;

            if (OnBeforeSave != null || OnSaveSuccess != null)
            {
                lst = GetChangeSet();
                OnBeforeSave?.Invoke(lst);
            }

            try
            {
                int rows = DbContext.SaveChanges();

                OnSaveSuccess?.Invoke(lst);

                res = new SubmitResult
                {
                    AffectedRows = rows,
                    Code         = 0,
                    Message      = successMessage
                };
            }
            catch (DbEntityValidationException dbEx)
            {
                OnExceptionHandling?.Invoke(dbEx);
                var msg = string.Empty;

                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        msg += Environment.NewLine +
                               string.Format("Property: {0} Error: {1}", validationError.PropertyName,
                                             validationError.ErrorMessage);
                    }
                }
                res = new SubmitResult
                {
                    Message = failMessage,
                    Code    = 102,
                };
                res.SetException(dbEx);
                res.ExceptionMessage = msg;
            }
            catch (SqlException ex)
            {
                OnExceptionHandling?.Invoke(ex);
                res = new SubmitResult
                {
                    Code    = ex.Number,
                    Message = failMessage
                };
                res.SetException(ex);
            }
            catch (Exception ex)
            {
                OnExceptionHandling?.Invoke(ex);
                res = new SubmitResult
                {
                    Code    = 101,
                    Message = failMessage
                };
                res.SetException(ex);
            }
            return(res);
        }