/// <summary>
        /// 带事务的Update
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2016/2/16 15:15:19</remarks>
        public bool Update(TaskHistoryEntity entity, DbTransaction trans = null)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_TaskHistory_Update");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, entity.Idx);
            database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId);
            database.AddInParameter(commandWrapper, "@TaskId", DbType.Int32, entity.TaskId);
            database.AddInParameter(commandWrapper, "@CurTimes", DbType.Int32, entity.CurTimes);
            database.AddInParameter(commandWrapper, "@StepRecord", DbType.AnsiString, entity.StepRecord);
            database.AddInParameter(commandWrapper, "@DoneParam", DbType.Binary, entity.DoneParam);
            database.AddInParameter(commandWrapper, "@PrizeExp", DbType.Int32, entity.PrizeExp);
            database.AddInParameter(commandWrapper, "@PrizeCoin", DbType.Int32, entity.PrizeCoin);
            database.AddInParameter(commandWrapper, "@PrizeItemCode", DbType.Int32, entity.PrizeItemCode);
            database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status);
            database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime);
            database.AddInParameter(commandWrapper, "@UpdateTime", DbType.DateTime, entity.UpdateTime);


            int results = 0;

            if (trans != null)
            {
                results = database.ExecuteNonQuery(commandWrapper, trans);
            }
            else
            {
                results = database.ExecuteNonQuery(commandWrapper);
            }

            entity.Idx = (System.Int32)database.GetParameterValue(commandWrapper, "@Idx");

            return(Convert.ToBoolean(results));
        }
        public async Task <TaskAggregate> ChangeTaskState(Guid taskId, int order)
        {
            var taskAggregate = await PrepareTaskAggregate(taskId);

            var newState = taskAggregate.TaskHistory.Where(x => x.Order == order).FirstOrDefault();

            if (newState == null)
            {
                return(null);
            }
            taskAggregate.ActiveState = newState;
            var taskEntity = new TaskEntity();

            taskEntity.Id            = taskAggregate.Id;
            taskEntity.Name          = taskAggregate.Name;
            taskEntity.ActiveStateId = taskAggregate.ActiveState.StateId;
            taskEntity.FlowId        = taskAggregate.Flow.Id;

            var taskHistoryEntity = new TaskHistoryEntity();

            taskHistoryEntity.FlowId  = taskAggregate.Flow.Id;
            taskHistoryEntity.Order   = taskAggregate.ActiveState.Order;
            taskHistoryEntity.StateId = taskAggregate.ActiveState.StateId;

            await _unitOfWork.Tasks.Update(taskEntity);

            await _unitOfWork.TaskHistories.Add(taskHistoryEntity);

            _unitOfWork.Commit();
            return(taskAggregate);
        }
        public async Task <int> Add(TaskHistoryEntity entity)
        {
            entity.CreatedOn = DateTime.Now;
            var sql          = "INSERT INTO TaskHistory (Id, TaskId, StateId, FlowId, [Order],CreatedOn) Values (@Id, @TaskId, @StateId, @FlowId, @Order,@CreatedOn);";
            var affectedRows = await Connection.ExecuteAsync(sql, new { Id = entity.Id, TaskId = entity.TaskId, StateId = entity.StateId, FlowId = entity.FlowId, Order = entity.Order, CreatedOn = entity.CreatedOn }, Transaction);

            return(affectedRows);

            /*using (var connection = new SqlConnection(_configuration.GetConnectionString("DefaultConnection")))
             * {
             *  connection.Open();
             *  var affectedRows = await connection.ExecuteAsync(sql, entity);
             *  return affectedRows;
             * }*/
        }
        public async Task <int> Update(TaskHistoryEntity entity)
        {
            throw new NotImplementedException();

            /*entity.ModifiedOn = DateTime.Now;
             * var sql = "UPDATE TaskHistory SET Name = @Name, Description = @Description, Status = @Status, DueDate = @DueDate, DateModified = @DateModified WHERE Id = @Id;";
             * var affectedRows = await Connection.ExecuteAsync(sql, entity, Transaction);
             * return affectedRows;
             * using (var connection = new SqlConnection(_configuration.GetConnectionString("DefaultConnection")))
             * {
             *  connection.Open();
             *  var affectedRows = await connection.ExecuteAsync(sql, entity);
             *  return affectedRows;
             * }*/
        }
        public async Task <bool> TaskPrevState(Guid taskId)
        {
            var taskAggregate = await PrepareTaskAggregate(taskId);

            taskAggregate.Previous();
            var taskHistory = new TaskHistoryEntity();

            taskHistory.Order   = taskAggregate.ActiveState.Order;
            taskHistory.StateId = taskAggregate.ActiveState.StateId;
            taskHistory.TaskId  = taskAggregate.Id;
            taskHistory.FlowId  = taskAggregate.Flow.Id;
            await _unitOfWork.TaskHistories.Add(taskHistory);

            _unitOfWork.Commit();
            return(true);
        }
        /// <summary>
        /// 将IDataReader的当前记录读取到TaskHistoryEntity 对象
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public TaskHistoryEntity LoadSingleRow(IDataReader reader)
        {
            var obj = new TaskHistoryEntity();

            obj.Idx           = (System.Int32)reader["Idx"];
            obj.ManagerId     = (System.Guid)reader["ManagerId"];
            obj.TaskId        = (System.Int32)reader["TaskId"];
            obj.CurTimes      = (System.Int32)reader["CurTimes"];
            obj.StepRecord    = (System.String)reader["StepRecord"];
            obj.DoneParam     = (System.Byte[])reader["DoneParam"];
            obj.PrizeExp      = (System.Int32)reader["PrizeExp"];
            obj.PrizeCoin     = (System.Int32)reader["PrizeCoin"];
            obj.PrizeItemCode = (System.Int32)reader["PrizeItemCode"];
            obj.Status        = (System.Int32)reader["Status"];
            obj.RowTime       = (System.DateTime)reader["RowTime"];
            obj.UpdateTime    = (System.DateTime)reader["UpdateTime"];

            return(obj);
        }
        public async Task <bool> AssignFlowToTask(Guid taskId, Guid flowId)
        {
            var task = await _unitOfWork.Tasks.Get(taskId);

            if (task.ActiveStateId != null && task.FlowId != null)
            {
                return(false);
            }
            var flowStates = await _unitOfWork.FlowStates.GetStatesByFlowId(flowId);

            if (!flowStates.Any())
            {
                return(false);
            }
            var firstState = flowStates.Where(x => x.Order == 1).FirstOrDefault();

            task.FlowId        = flowId;
            task.ActiveStateId = firstState.Id;


            var historyEntity = new TaskHistoryEntity();

            historyEntity.Order   = 1;
            historyEntity.TaskId  = taskId;
            historyEntity.FlowId  = flowId;
            historyEntity.StateId = firstState.Id;

            var result = await _unitOfWork.Tasks.Update(task);

            if (result == 0)
            {
                return(false);
            }
            var result2 = await _unitOfWork.TaskHistories.Add(historyEntity);

            if (result2 == 0)
            {
                return(false);
            }
            _unitOfWork.Commit();

            return(true);
        }
        /// <summary>
        /// GetById
        /// </summary>
        /// <param name="idx">idx</param>
        /// <returns>TaskHistoryEntity</returns>
        /// <remarks>2016/2/16 15:15:19</remarks>
        public TaskHistoryEntity GetById(System.Int32 idx)
        {
            var database = new SqlDatabase(this.ConnectionString);

            DbCommand commandWrapper = database.GetStoredProcCommand("P_TaskHistory_GetById");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, idx);


            TaskHistoryEntity obj = null;

            using (IDataReader reader = database.ExecuteReader(commandWrapper))
            {
                if (reader.Read())
                {
                    obj = LoadSingleRow(reader);
                }
            }
            return(obj);
        }
Example #9
0
        public static bool Update(TaskHistoryEntity taskHistoryEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new TaskHistoryProvider(zoneId);

            return(provider.Update(taskHistoryEntity, trans));
        }