Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
 public ActionResult Create([FromBody] BillDTO bill)
 {
     return(Ok(_billsService.CreateBill(bill)));
 }