示例#1
0
        public IActionResult CreateBill([FromBody] Post_Put_BillDTO createBillDTO)
        {
            if (createBillDTO == null || !createBillDTO.FriendIds.Any())
            {
                return(BadRequest());
            }

            Bill bill = _billHandler.AddBill(createBillDTO);

            createBillDTO.Id = bill.Id;

            return(CreatedAtRoute("GetBill", new { id = createBillDTO.Id }, createBillDTO));
        }
示例#2
0
        public IActionResult UpdateBill([FromBody] Post_Put_BillDTO updateBillDTO)
        {
            if (updateBillDTO == null || updateBillDTO.Id == 0 || updateBillDTO.FriendIds.Any())
            {
                return(BadRequest());
            }


            List <FriendDTO> friends = BillManagerDataStore.Current.Friends.Where(x => updateBillDTO.FriendIds.Contains(x.Id)).ToList();

            if (friends.Count() != updateBillDTO.FriendIds.Count())
            {
                return(BadRequest());
            }

            BillDTO bill = new BillDTO()
            {
                Id          = ++BillManagerDataStore.Current.LastBillId,
                Amount      = updateBillDTO.Amount,
                Description = updateBillDTO.Description
            };

            BillManagerDataStore.Current.Bills.Add(bill);

            decimal splitAmount = updateBillDTO.Amount / friends.Count();

            List <SplitBillDTO> splitBills = new List <SplitBillDTO>();

            foreach (FriendDTO friend in friends)
            {
                SplitBillDTO splitBill = new SplitBillDTO()
                {
                    Id          = ++BillManagerDataStore.Current.LastSplitBillId,
                    BillId      = bill.Id,
                    FriendId    = friend.Id,
                    Amount      = splitAmount,
                    Description = bill.Description,
                    FriendName  = friend.FirstName + " " + friend.LastName
                };
                BillManagerDataStore.Current.SplitBills.Add(splitBill);
                splitBills.Add(splitBill);
            }

            bill.FriendsSplit = splitBills;
            return(CreatedAtRoute("GetBill", new { id = bill.Id }, bill));
        }
示例#3
0
        public Bill AddBill(Post_Put_BillDTO billDTO)
        {
            if (billDTO == null || billDTO.FriendIds == null || !billDTO.FriendIds.Any())
            {
                return(null);
            }

            IEnumerable <Friend> friendsFromDb = _billManagerRepository.GetFriends(billDTO.FriendIds, false);

            if (billDTO.FriendIds.Count() != friendsFromDb.Count())
            {
                return(null);
            }

            Bill bill = new Bill()
            {
                Amount      = billDTO.Amount,
                Description = billDTO.Description
            };

            decimal splitAmount = billDTO.Amount / friendsFromDb.Count();

            List <SplitBill> splitBills = new List <SplitBill>();

            foreach (Friend friend in friendsFromDb)
            {
                SplitBill splitBill = new SplitBill()
                {
                    FriendId = friend.Id,
                    Amount   = splitAmount
                };

                bill.FriendsSplit.Add(splitBill);
            }

            _billManagerRepository.AddBill(bill);

            return(bill);
        }