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)); }
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)); }
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); }