Beispiel #1
0
 public IHttpActionResult TaskAddHistory([FromBody] TaskAddHistory addHistory)
 {
     if (string.IsNullOrEmpty(addHistory.TaskId))
     {
         return(BadRequest("A task id must exist"));
     }
     if (string.IsNullOrEmpty(addHistory.UserId))
     {
         return(BadRequest("A user id must exist"));
     }
     if (string.IsNullOrEmpty(addHistory.Log))
     {
         return(BadRequest("A log must exist"));
     }
     try
     {
         return(Ok(_dataAccess.TaskAddHistory(addHistory)));
     }
     catch (ArgumentException ex)
     {
         return(BadRequest(ex.Message));
     }
     catch (Exception ex)
     {
         return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Conflict, ex.Message)));
     }
 }
Beispiel #2
0
        public List <dynamic> TaskAddHistory(TaskAddHistory addHistory)
        {
            // get the task
            var taskDocument = _bucket.Get <Task>(addHistory.TaskId);

            if (!taskDocument.Success)
            {
                throw new ArgumentException("The task id does not exist");
            }

            // add a new history item to it
            var createdAt = DateTime.Now.ToShortDateString();
            var task      = taskDocument.Value;

            task.History.Add(new History
            {
                Log       = addHistory.Log,
                User      = addHistory.UserId,
                CreatedAt = createdAt
            });

            // save the task
            var updatedTask = new Document <Task>
            {
                Id      = taskDocument.Id,
                Content = task
            };

            _bucket.Upsert(updatedTask);

            // return
            var queryStr = @"SELECT ($1) AS log, 
                                    (SELECT u.* FROM `" + _bucket.Name + @"` u USE KEYS c._id)[0] AS `user`,
                                    ($2) AS createdAt
                            FROM `" + _bucket.Name + @"` c
                            WHERE c._id = $3";
            var query    = QueryRequest.Create(queryStr);

            query.ScanConsistency(ScanConsistency.RequestPlus);
            query.AddPositionalParameter(addHistory.Log);
            query.AddPositionalParameter(createdAt);
            query.AddPositionalParameter(addHistory.UserId);
            var queryResult = _bucket.Query <dynamic>(query);

            return(ExtractResultOrThrow(queryResult));
        }