public async Task <BillDto> Handle(CreateBillRequest request, CancellationToken cancellationToken) { var billItems = request.BillFormModel.BillItems.Select(item => { var billItem = new BillItem(item.BillItem.Description, item.BillItem.Amount, item.BillItem.Discount); if (item.PersonId > 0) { billItem.AssignPerson(item.PersonId, item.BillItem.Amount); } return(billItem); }).ToList(); var billToCreate = new Bill(request.BillFormModel.EstablishmentName, request.BillFormModel.BillDate, billItems, request.BillFormModel.Currency); billToCreate.Remarks = request.BillFormModel.Remarks; billToCreate.SetExternalId(_externalIdGenerator.Generate()); billToCreate.SetBillItems(billItems); billToCreate.SetExtraCharges(request.BillFormModel.ExtraCharges.Select(item => new Core.OwnedEntities.ExtraCharge(item.Description, item.Rate)).ToList()); request.BillFormModel.Participants.ForEach(participant => { billToCreate.AddParticipant(participant.Person.Id); }); _splitThatBillContext.Attach(_contextData.CurrentUser); billToCreate.UpdateBillTaker(_contextData.CurrentUser); _splitThatBillContext.Add(billToCreate); await _splitThatBillContext.SaveChangesAsync(); return(_mapper.Map <BillDto>(billToCreate)); }
public void Seed() { _splitThatBillContext.Database.ExecuteSqlRaw("CALL Add_Currencies"); var person1 = new Person("lhar", "gil"); person1.SetExternalId(_externalIdGenerator.Generate()); person1.AddPaymentDetail(PaymentDetail.Create("Maybank", "34532156778", "Lhar Gil")); var person2 = new Person("jon", "snow"); person2.SetExternalId(_externalIdGenerator.Generate()); var person3 = new Person("raffy", "tulfo"); person3.SetExternalId(_externalIdGenerator.Generate()); if (!_splitThatBillContext.People.Any()) { _splitThatBillContext.People.Add(person1); _splitThatBillContext.People.Add(person2); _splitThatBillContext.People.Add(person3); } if (!_splitThatBillContext.Bills.Any()) { var billItem1 = new BillItem("Cup of rice", 3.0M); var billITem2 = new BillItem("Ayam goreng", 7.0M); var bill = new Bill("Sri Ayutthaya", _dateTimeManager.Today, new List <BillItem> { billItem1, billITem2 }, "MYR"); bill.SetExternalId(_externalIdGenerator.Generate()); bill.AddParticipant(person3); bill.AddParticipant(person2); bill.AddParticipant(person1); var extraCharge1 = new ExtraCharge("Service charge", 0.10M); var extraCharge2 = new ExtraCharge("SST", 0.06M); bill.AddExtraCharge(extraCharge1); bill.AddExtraCharge(extraCharge2); person2.AddBillItem(billItem1, billItem1.UnitPrice); bill.UpdateBillTaker(person1); _splitThatBillContext.Bills.Add(bill); var billItem3 = new BillItem("Nasi lemak", 10.0M); var billItem4 = new BillItem("Avocado toast", 15.5M); var bill2 = new Bill("Feebay.co", _dateTimeManager.Today, new List <BillItem> { billItem3, billItem4 }, "MYR"); bill2.SetExternalId(_externalIdGenerator.Generate()); bill2.AddParticipant(person1); bill2.AddParticipant(person2); person1.AddBillItem(billItem4, billItem4.UnitPrice); var extraCharge3 = new ExtraCharge("Service charge", 0.10M); var extraCharge4 = new ExtraCharge("SST", 0.06M); bill2.AddExtraCharge(extraCharge3); bill2.AddExtraCharge(extraCharge4); bill2.UpdateBillTaker(person1); _splitThatBillContext.Bills.Add(bill2); _splitThatBillContext.SaveChanges(); } }