コード例 #1
0
ファイル: DraftsController.cs プロジェクト: bosstjann/Sparrow
        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));
        }
コード例 #2
0
ファイル: DraftsController.cs プロジェクト: bosstjann/Sparrow
        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));
        }