public HttpResponseMessage PostItem(Guid draftId, DraftItemAddModel model) { if (model == null || !model.ProductId.HasValue) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bad request.")); } var draft = Session.Get <OfferDraft>(draftId); if (draft == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Draft not found.")); } var product = Session.Load <Product>(model.ProductId.Value); var draftItem = new OfferDraftItem(product, model.Quantity); draft.AddItem(draftItem); draft.ChangeItemDiscount(draftItem, model.Discount); // Call Save explicitly to generate new Id which will be returned. Session.Save(draftItem); Session.Update(draft); var response = new DraftItemResponseModel { Draft = Mapper.Map <DraftTotalsResponseModel>(draft), Item = Mapper.Map <DraftItemViewModel>(draftItem) }; return(Request.CreateResponse(HttpStatusCode.Created, response)); }
public HttpResponseMessage PutItem(Guid draftId, DraftItemEditModel model) { if (model == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bad request.")); } if (model.Id == Guid.Empty) { return(PostItem(draftId, model)); } var draft = Session.Get <OfferDraft>(draftId); if (draft == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Draft not found.")); } var draftItem = draft.Items.FirstOrDefault(x => x.Id == model.Id); if (draftItem == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Draft item not found.")); } draftItem.Quantity = model.Quantity; draft.ChangeItemDiscount(draftItem, model.Discount); Session.Update(draft); var response = new DraftItemResponseModel { Draft = Mapper.Map <DraftTotalsResponseModel>(draft), Item = Mapper.Map <DraftItemViewModel>(draftItem) }; return(Request.CreateResponse(HttpStatusCode.OK, response)); }