示例#1
0
        public List <Outcome> Patch(OutcomeBatch request)
        {
            if (true != request?.Any())
            {
                throw new HttpError(HttpStatusCode.NotFound, "Request cannot be empty.");
            }

            var ret      = new List <Outcome>();
            var errors   = new List <ResponseError>();
            var errorMap = new Dictionary <string, string>();
            var i        = 0;

            request.ForEach(dto =>
            {
                try
                {
                    var obj = Patch(dto) as Outcome;
                    ret.Add(obj);
                    errorMap[$"{i}"] = $"true";
                }
                catch (Exception ex)
                {
                    errorMap[$"{i}"] = $"false";
                    errors.Add(new ResponseError()
                    {
                        Message   = $"{ex.Message}{Environment.NewLine}{ex.InnerException?.Message}",
                        ErrorCode = $"{i}"
                    });
                }
                i += 1;
            });
            base.Response.AddHeader("X-AutoBatch-Completed", $"{ret.Count} succeeded");
            if (errors.Any())
            {
                throw new HttpError(HttpStatusCode.BadRequest, $"{errors.Count} failed in batch")
                      {
                          Response = new ErrorResponse()
                          {
                              ResponseStatus = new ResponseStatus
                              {
                                  ErrorCode = nameof(HttpError),
                                  Meta      = errorMap,
                                  Message   = "Incomplete request",
                                  Errors    = errors
                              }
                          }
                      };
            }
            return(ret);
        }
示例#2
0
 public List <Outcome> Put(OutcomeBatch request)
 {
     return(Patch(request));
 }