public async Task <IHttpActionResult> RegisterFlightForUser(string username, BookFlightModel model) { var authHeaderValue = GetAuthHeaderValue(Request.Headers); if (string.IsNullOrEmpty(authHeaderValue)) { return(Content(HttpStatusCode.Unauthorized, string.Empty)); } if (!VerifyToken(authHeaderValue, username)) { return(Content(HttpStatusCode.Forbidden, string.Empty)); } if (model == null || !model.Flights.Any()) { return(Content(HttpStatusCode.BadRequest, string.Empty)); } foreach (var flight in model.Flights) { flight.BookedOn = "try-cb-dotnet"; } var userKey = CreateUserKey(username); var userDocument = await _bucket.GetDocumentAsync <User>(userKey); if (!userDocument.Success) { if (userDocument.Status == ResponseStatus.KeyNotFound) { return(Content(HttpStatusCode.Forbidden, string.Empty)); } return(Content(HttpStatusCode.InternalServerError, new Error(userDocument.Message))); } if (userDocument.Content.Flights == null) { userDocument.Content.Flights = new List <Flight>(model.Flights); } else { userDocument.Content.Flights.AddRange(model.Flights); } var result = await _bucket.ReplaceAsync(userKey, userDocument.Content); if (!result.Success) { return(Content(HttpStatusCode.InternalServerError, result.Message)); } var data = new { added = model.Flights }; return(Content(HttpStatusCode.Accepted, new Result(data))); }
public async Task <IHttpActionResult> BookFlights(BookFlightModel model) { var result = await MediatR.SendAsync(model); return(ResponseMessage(Request.CreateResponse(HttpStatusCode.OK, result))); }