public IHttpActionResult PostBill(BillModel bill) { if (!ModelState.IsValid || bill.OfferID == null || bill.BuyerID == null) { return(BadRequest(ModelState)); } OfferModel offer = offersService.GetOffer((int)bill.OfferID); UserModel buyer = usersService.GetUser((int)bill.BuyerID); if (offer == null || buyer == null) { return(NotFound()); } if (buyer.UserRole != UserRoles.ROLE_CUSTOMER) { return(BadRequest("User's role must be ROLE_CUSTOMER")); } bill.Offer = offer; bill.Buyer = buyer; offersService.UpdateOffer(offer, true); BillModel createdBill = billsService.CreateBill(bill); return(CreatedAtRoute("PostBill", new { id = createdBill.ID }, createdBill)); }
public void TestMethod1() { //Arrange var sai = _userService.RegisterUser("*****@*****.**", "123", "Sai"); var dinesh = _userService.RegisterUser("*****@*****.**", "234", "Dinesh"); var dilip = _userService.RegisterUser("*****@*****.**", "345", "Dilip"); var shares = new List <UserShare>() { new UserShare(dinesh.UserId, 1300), new UserShare(dilip.UserId, 1600), new UserShare(sai.UserId, 1100) }; var createdBill = _billsService.CreateBill("Ooty", "Trip to Ooty-Coonor", 4000, sai.UserId, shares); //Act and Assert var settlementDilipS1 = new Settlement() { Description = "S1", Value = 900, SettledDate = DateTime.Now, TransactionId = "T1" }; var settlementDilipS2 = new Settlement() { Description = "S2", Value = 700, SettledDate = DateTime.Now, TransactionId = "T2" }; var settlementDineshS3 = new Settlement() { Description = "S3", Value = 1300, SettledDate = DateTime.Now, TransactionId = "T1" }; var billsData = BillsRepository.BillsData; _userService.AddSettlementForABill(createdBill.Id, dilip.Email, settlementDilipS1); Assert.True(billsData[createdBill.Id].GetBillStatus() == Status.NotSettled); _userService.AddSettlementForABill(createdBill.Id, dinesh.Email, settlementDineshS3); Assert.True(billsData[createdBill.Id].GetBillStatus() == Status.NotSettled); _userService.AddSettlementForABill(createdBill.Id, dilip.Email, settlementDilipS2); Assert.True(billsData[createdBill.Id].GetBillStatus() == Status.Settled); }
public IHttpActionResult PostBillModel(Bill billModel) { //// ModelState is not enough, we need nonempty offerId and buyerId foreign keys too //if (!ModelState.IsValid) //{ // return BadRequest(ModelState); //} // return CreatedAtRoute("SingleBillById", new { id = billModel.id }, billModel); // they are nullable, although the entity will not be created! FIX THE MODEL if (!ModelState.IsValid || billModel.offerId == null || billModel.userId == null) { return(BadRequest(ModelState)); } Offer offer = offerService.GetOffer((int)billModel.offerId); User buyer = userService.GetUser((int)billModel.userId); if (offer == null || buyer == null) { return(NotFound()); } if (buyer.user_role != Models.User.UserRoles.ROLE_CUSTOMER) { return(base.BadRequest("User's role must be ROLE_CUSTOMER")); } billModel.offerModel = offer; billModel.userModel = buyer; // VAZNO: ovo nije eksplicitno objasnjeno ali sledi iz logike rada // Kada je kreiran racun, koji svakako mora biti povezan sa ponudom, moramo azurirati odredjena polja i u ponudi offerService.UpdateOffer(offer, true); Bill createdBill = billService.CreateBill(billModel); return(CreatedAtRoute("PostBill", new { id = createdBill.id }, createdBill)); }
public ActionResult Create([FromBody] BillDTO bill) { return(Ok(_billsService.CreateBill(bill))); }