protected virtual void ExecuteDelete()
        {
            var isActiveRow = Row as IIsActiveRow;
            var idField     = (Field)Row.IdField;
            var id          = Request.EntityId.Value;

            if (ShouldActuallyDelete ||
                isActiveRow == null)
            {
                if (new SqlDelete(Row.Table)
                    .WhereEqual(idField, id)
                    .Execute(Connection) != 1)
                {
                    throw DataValidation.EntityNotFoundError(Row, id);
                }
            }
            else
            {
                if (new SqlUpdate(Row.Table)
                    .Set(isActiveRow.IsActiveField, -1)
                    .WhereEqual(idField, id)
                    .Where(new Criteria(isActiveRow.IsActiveField) >= 0)
                    .Execute(Connection) != 1)
                {
                    throw DataValidation.EntityNotFoundError(Row, id);
                }
            }

            InvalidateCacheOnCommit();
        }
        protected virtual void LoadOldEntity()
        {
            var idField = (Field)(Row.IdField);
            var id      = Row.IdField[Row].Value;

            if (!PrepareQuery().GetFirst(Connection))
            {
                throw DataValidation.EntityNotFoundError(Row, id);
            }
        }
        protected virtual void LoadOldEntity()
        {
            if (!PrepareQuery().GetFirst(Connection))
            {
                var idField = (Field)(Row.IdField);
                var id      = Request.EntityId != null?
                              idField.ConvertValue(Request.EntityId, CultureInfo.InvariantCulture)
                                  : idField.AsObject(Row);

                throw DataValidation.EntityNotFoundError(Row, id);
            }
        }
        protected virtual void LoadEntity()
        {
            var idField = (Field)Row.IdField;

            var query = new SqlQuery().From(Row)
                        .WhereEqual(idField, Request.EntityId.Value);

            PrepareQuery(query);

            if (!query.GetFirst(Connection))
            {
                throw DataValidation.EntityNotFoundError(Row, Request.EntityId.Value);
            }
        }
        protected virtual void LoadEntity()
        {
            var idField = Row.IdField;
            var id = idField.ConvertValue(Request.EntityId, CultureInfo.InvariantCulture);

            var query = new SqlQuery()
                .Dialect(Connection.GetDialect())
                .From(Row)
                .WhereEqual(idField, id);

            PrepareQuery(query);

            if (!query.GetFirst(Connection))
                throw DataValidation.EntityNotFoundError(Row, Request.EntityId, Localizer);
        }
Beispiel #6
0
        protected virtual void ExecuteDelete()
        {
            var isDeletedRow = Row as IIsActiveDeletedRow;
            var deleteLogRow = Row as IDeleteLogRow;
            var idField      = (Field)Row.IdField;
            var id           = Request.EntityId.Value;

            if (isDeletedRow == null && deleteLogRow == null)
            {
                if (new SqlDelete(Row.Table)
                    .WhereEqual(idField, id)
                    .Execute(Connection) != 1)
                {
                    throw DataValidation.EntityNotFoundError(Row, id);
                }
            }
            else
            {
                if (isDeletedRow != null)
                {
                    if (new SqlUpdate(Row.Table)
                        .Set(isDeletedRow.IsActiveField, -1)
                        .WhereEqual(idField, id)
                        .Where(new Criteria(isDeletedRow.IsActiveField) >= 0)
                        .Execute(Connection) != 1)
                    {
                        throw DataValidation.EntityNotFoundError(Row, id);
                    }
                }
                else //if (deleteLogRow != null)
                {
                    if (new SqlUpdate(Row.Table)
                        .Set(deleteLogRow.DeleteDateField, DateTimeField.ToDateTimeKind(DateTime.Now, deleteLogRow.DeleteDateField.DateTimeKind))
                        .Set((Field)deleteLogRow.DeleteUserIdField, Authorization.UserId.TryParseID())
                        .WhereEqual(idField, id)
                        .Where(new Criteria((Field)deleteLogRow.DeleteUserIdField).IsNull())
                        .Execute(Connection) != 1)
                    {
                        throw DataValidation.EntityNotFoundError(Row, id);
                    }
                }
            }

            InvalidateCacheOnCommit();
        }
Beispiel #7
0
        public TRetrieveResponse Process(IDbConnection connection, TRetrieveRequest request)
        {
            StateBag.Clear();

            if (connection == null)
            {
                throw new ArgumentNullException("connection");
            }

            request.CheckNotNull();
            if (request.EntityId == null)
            {
                throw DataValidation.RequiredError("entityId");
            }

            Connection = connection;
            Request    = request;
            ValidateRequest();

            Response = new TRetrieveResponse();
            Row      = new TRow();

            this.Query = CreateQuery();

            PrepareQuery(Query);

            OnBeforeExecuteQuery();

            if (Query.GetFirst(Connection))
            {
                Response.Entity = Row;
            }
            else
            {
                throw DataValidation.EntityNotFoundError(Row, request.EntityId);
            }

            OnAfterExecuteQuery();

            OnReturn();
            return(Response);
        }
Beispiel #8
0
        public TRetrieveResponse Process(IDbConnection connection, TRetrieveRequest request)
        {
            if (connection == null)
            {
                throw new ArgumentNullException("connection");
            }

            request.CheckNotNull();
            if (request.EntityId == null)
            {
                throw DataValidation.RequiredError("entityId");
            }

            Connection = connection;
            Request    = request;
            ValidatePermissions();

            Response = new TRetrieveResponse();
            Row      = new TRow();

            var query = CreateQuery();

            PrepareQuery(query);

            if (query.GetFirst(Connection))
            {
                Response.Entity = Row;
            }
            else
            {
                throw DataValidation.EntityNotFoundError(Row, request.EntityId.Value);
            }

            OnReturn();
            return(Response);
        }
Beispiel #9
0
        protected virtual void ExecuteDelete()
        {
            var isActiveDeletedRow = Row as IIsActiveDeletedRow;
            var isDeletedRow       = Row as IIsDeletedRow;
            var deleteLogRow       = Row as IDeleteLogRow;
            var idField            = (Field)Row.IdField;
            var id = idField.ConvertValue(Request.EntityId, CultureInfo.InvariantCulture);

            if (isActiveDeletedRow == null && isDeletedRow == null && deleteLogRow == null)
            {
                if (new SqlDelete(Row.Table)
                    .WhereEqual(idField, id)
                    .Execute(Connection) != 1)
                {
                    throw DataValidation.EntityNotFoundError(Row, id);
                }
            }
            else
            {
                if (isDeletedRow != null || isActiveDeletedRow != null)
                {
                    var updateLogRow = Row as IUpdateLogRow;
                    var update       = new SqlUpdate(Row.Table)
                                       .WhereEqual(idField, id)
                                       .Where(ServiceQueryHelper.GetNotDeletedCriteria(Row));

                    if (isActiveDeletedRow != null)
                    {
                        update.Set(isActiveDeletedRow.IsActiveField, -1);
                    }
                    else if (isDeletedRow != null)
                    {
                        update.Set(isDeletedRow.IsDeletedField, true);
                    }

                    if (deleteLogRow != null)
                    {
                        update.Set(deleteLogRow.DeleteDateField, DateTimeField.ToDateTimeKind(DateTime.Now,
                                                                                              deleteLogRow.DeleteDateField.DateTimeKind))
                        .Set((Field)deleteLogRow.DeleteUserIdField, Authorization.UserId.TryParseID());
                    }
                    else if (updateLogRow != null)
                    {
                        update.Set(updateLogRow.UpdateDateField, DateTimeField.ToDateTimeKind(DateTime.Now,
                                                                                              updateLogRow.UpdateDateField.DateTimeKind))
                        .Set((Field)updateLogRow.UpdateUserIdField, Authorization.UserId.TryParseID());
                    }

                    if (update.Execute(Connection) != 1)
                    {
                        throw DataValidation.EntityNotFoundError(Row, id);
                    }
                }
                else //if (deleteLogRow != null)
                {
                    if (new SqlUpdate(Row.Table)
                        .Set(deleteLogRow.DeleteDateField, DateTimeField.ToDateTimeKind(DateTime.Now,
                                                                                        deleteLogRow.DeleteDateField.DateTimeKind))
                        .Set((Field)deleteLogRow.DeleteUserIdField, Authorization.UserId.TryParseID())
                        .WhereEqual(idField, id)
                        .Where(new Criteria((Field)deleteLogRow.DeleteUserIdField).IsNull())
                        .Execute(Connection) != 1)
                    {
                        throw DataValidation.EntityNotFoundError(Row, id);
                    }
                }
            }

            InvalidateCacheOnCommit();
        }
Beispiel #10
0
        public TUndeleteResponse Process(IUnitOfWork unitOfWork, UndeleteRequest request)
        {
            UnitOfWork = unitOfWork ?? throw new ArgumentNullException("unitOfWork");

            ValidatePermissions();

            Request  = request;
            Response = new TUndeleteResponse();

            if (request.EntityId == null)
            {
                throw DataValidation.RequiredError("EntityId", Localizer);
            }

            Row = new TRow();

            var isActiveDeletedRow = Row as IIsActiveDeletedRow;
            var isDeletedRow       = Row as IIsDeletedRow;
            var deleteLogRow       = Row as IDeleteLogRow;

            if (isActiveDeletedRow == null && isDeletedRow == null && deleteLogRow == null)
            {
                throw new NotImplementedException();
            }

            var idField = Row.IdField;
            var id      = idField.ConvertValue(Request.EntityId, CultureInfo.InvariantCulture);

            LoadEntity();

            ValidateRequest();

            if ((isDeletedRow != null && isDeletedRow.IsDeletedField[Row] != true) ||
                (isActiveDeletedRow != null && isActiveDeletedRow.IsActiveField[Row] >= 0) ||
                (deleteLogRow != null && deleteLogRow.DeleteUserIdField.IsNull(Row)))
            {
                Response.WasNotDeleted = true;
            }
            else
            {
                OnBeforeUndelete();

                var update = new SqlUpdate(Row.Table)
                             .WhereEqual(idField, id);

                if (isActiveDeletedRow != null)
                {
                    update.Set(isActiveDeletedRow.IsActiveField, 1)
                    .WhereEqual(isActiveDeletedRow.IsActiveField, -1);
                }
                else if (isDeletedRow != null)
                {
                    update.Set(isDeletedRow.IsDeletedField, false)
                    .WhereEqual(isDeletedRow.IsDeletedField, 1);
                }

                if (deleteLogRow != null)
                {
                    update.Set(deleteLogRow.DeleteUserIdField, null)
                    .Set(deleteLogRow.DeleteDateField, null);

                    if (isActiveDeletedRow == null && isDeletedRow == null)
                    {
                        update.Where(deleteLogRow.DeleteUserIdField.IsNotNull());
                    }
                }

                if (update.Execute(Connection) != 1)
                {
                    throw DataValidation.EntityNotFoundError(Row, id, Localizer);
                }

                InvalidateCacheOnCommit();

                OnAfterUndelete();

                DoAudit();
            }

            OnReturn();

            return(Response);
        }
        public TUndeleteResponse Process(IUnitOfWork unitOfWork, UndeleteRequest request)
        {
            if (unitOfWork == null)
            {
                throw new ArgumentNullException("unitOfWork");
            }

            ValidatePermissions();

            UnitOfWork = unitOfWork;

            Request  = request;
            Response = new TUndeleteResponse();

            if (request.EntityId == null)
            {
                throw DataValidation.RequiredError("EntityId");
            }

            Row = new TRow();

            var isActiveRow = Row as IIsActiveRow;

            if (isActiveRow == null)
            {
                throw new NotImplementedException();
            }

            var idField = (Field)Row.IdField;

            LoadEntity();

            ValidateRequest();

            if (isActiveRow.IsActiveField[Row] > 0)
            {
                Response.WasNotDeleted = true;
            }
            else
            {
                OnBeforeUndelete();

                if (new SqlUpdate(Row.Table)
                    .Set(isActiveRow.IsActiveField, 1)
                    .WhereEqual(idField, request.EntityId.Value)
                    .WhereEqual(isActiveRow.IsActiveField, -1)
                    .Execute(Connection) != 1)
                {
                    throw DataValidation.EntityNotFoundError(Row, request.EntityId.Value);
                }

                InvalidateCacheOnCommit();

                OnAfterUndelete();

                DoAudit();
            }

            OnReturn();

            return(Response);
        }