public async Task <Response> SaveResident(ResidentRequest residentResquest) { var residentId = GetMaterializeResidentId(residentResquest.BlockNumber, residentResquest.HouseNumber); var getResidentDuplicated = _securityPaymentContext.ResidentInformation.ToList() .Find(x => x.ResidentInformationId == residentId); if (getResidentDuplicated == null) { ControlTransactionFields transactionInfo = TransactionInfo.GetTransactionInfo(); IDbContextTransaction transaction = _securityPaymentContext.Database.BeginTransaction(); ResidentInformation residentInformation = MaterializeGeneralResidentInformation(residentResquest, residentId, transactionInfo); PhoneContact phoneContact = MaterializeContactInformation(residentResquest, residentId, transactionInfo); EmailContact emailContact = MaterializeEmailContact(residentResquest, residentId, transactionInfo); HouseInformation houseInformation = MaterializeHouseInformation(residentResquest, residentId, transactionInfo); await _securityPaymentContext.AddAsync <ResidentInformation>(residentInformation); await _securityPaymentContext.AddAsync <PhoneContact>(phoneContact); await _securityPaymentContext.AddAsync <EmailContact>(emailContact); await _securityPaymentContext.AddAsync <HouseInformation>(houseInformation); await _securityPaymentContext.SaveChangesAsync(); transaction.Commit(); return(new Response { Data = residentInformation }); } return(new Response { Message = "Failed, the resident already exist!" }); }
public async Task <Response> SaveVoucher(VoucherRequest voucherRequest) { var existResident = _securityPaymentContext.ResidentInformation.ToList().FirstOrDefault(c => c.ResidentInformationId == voucherRequest.ResidentId); var paymentCalendarConfigurationExist = _securityPaymentContext.PaymentCalendar.ToList() .Where(x => x.PaymentDate.Year == voucherRequest.PaymentCalendarDate.Year && x.PaymentDate.Month == voucherRequest.PaymentCalendarDate.Month && x.PaymentDate.Day == voucherRequest.PaymentCalendarDate.Day).ToList(); if (paymentCalendarConfigurationExist != null && existResident.ResidentInformationId == voucherRequest.ResidentId) { ControlTransactionFields transactionInfo = TransactionInfo.GetTransactionInfo(); IDbContextTransaction transaction = _securityPaymentContext.Database.BeginTransaction(); Voucher paymentCalendarConfiguration = MaterializeVoucherByResident(voucherRequest, transactionInfo); await _securityPaymentContext.AddAsync <Voucher>(paymentCalendarConfiguration); await _securityPaymentContext.SaveChangesAsync(); transaction.Commit(); return(new Response { Data = paymentCalendarConfiguration }); } return(new Response { Message = "Failed, the payment configuration already exist!" }); }
public async Task <Response> SavePaymentCalendarConfiguration(PaymentCalendarRequest paymentCalendarRequest) { var paymentConfigurationDuplicated = _securityPaymentContext.PaymentCalendar.ToList() .Find(x => x.PaymentDate == paymentCalendarRequest.PaymentDate); if (paymentConfigurationDuplicated == null) { ControlTransactionFields transactionInfo = TransactionInfo.GetTransactionInfo(); IDbContextTransaction transaction = _securityPaymentContext.Database.BeginTransaction(); PaymentCalendar paymentCalendarConfiguration = MaterializePaymentConfiguration(paymentCalendarRequest, transactionInfo); await _securityPaymentContext.AddAsync <PaymentCalendar>(paymentCalendarConfiguration); await _securityPaymentContext.SaveChangesAsync(); transaction.Commit(); return(new Response { Data = paymentCalendarConfiguration }); } return(new Response { Message = "Failed, the payment configuration already exist!" }); }
public async Task <Response> DeleteResident(string residentId) { var getResidentDuplicated = _securityPaymentContext.ResidentInformation.ToList() .Find(x => x.ResidentInformationId == residentId); if (getResidentDuplicated != null) { ControlTransactionFields transactionInfo = TransactionInfo.GetTransactionInfo(); IDbContextTransaction transaction = _securityPaymentContext.Database.BeginTransaction(); var residentInformation = _securityPaymentContext.ResidentInformation.ToList(). Find(x => x.ResidentInformationId == getResidentDuplicated.ResidentInformationId); var phoneContact = _securityPaymentContext.PhoneContact.ToList(). Find(x => x.ResidentId == getResidentDuplicated.ResidentInformationId); var emailContact = _securityPaymentContext.EmailContact.ToList(). Find(x => x.ResidentId == getResidentDuplicated.ResidentInformationId); var houseInformation = _securityPaymentContext.HouseInformation.ToList(). Find(x => x.ResidentId == getResidentDuplicated.ResidentInformationId); _securityPaymentContext.Remove <ResidentInformation>(residentInformation); _securityPaymentContext.Remove <PhoneContact>(phoneContact); _securityPaymentContext.Remove <EmailContact>(emailContact); _securityPaymentContext.Remove <HouseInformation>(houseInformation); await _securityPaymentContext.SaveChangesAsync(); transaction.Commit(); return(new Response { Data = "Status: Ok" }); } return(new Response { Message = "Failed, the resident not exists!" }); }
private Sales MaterializeSale(SalesRequest salesRequest, ControlTransactionFields transactionInfo) { return(new Sales { ProductId = salesRequest.ProductId, SoldQuantity = salesRequest.SoldQuantity, TypeSale = salesRequest.TypeSale, Total = salesRequest.Total, Commentary = salesRequest.Commentary, CreatedBy = transactionInfo.CreatedBy, TransactionDate = transactionInfo.TransactionDate, }); }
private Voucher MaterializeVoucherByResident(VoucherRequest voucherRequest, ControlTransactionFields transactionInfo) { return(new Voucher { ResidentId = voucherRequest.ResidentId, PaymentCalendarDate = voucherRequest.PaymentCalendarDate, PaymentDate = voucherRequest.PaymentDate, PaymentAmmount = voucherRequest.PaymentAmmount, PendingAmmount = voucherRequest.PendingAmmount, TransactionDate = transactionInfo.TransactionDate, ComputerName = transactionInfo.ComputerName, UserTransaction = transactionInfo.UserTransaction }); }
private ProductAgg MaterializeProduct(ProductRequest productRequest, ControlTransactionFields transactionInfo) { return(new ProductAgg { NameProduct = productRequest.NameProduct, InitialExistence = productRequest.InitialExistence, Existence = productRequest.InitialExistence, PurchasePrice = productRequest.PurchasePrice, SalePrice = productRequest.SalePrice, Wholesaleprice = productRequest.Wholesaleprice, CreatedBy = transactionInfo.CreatedBy, TransactionDate = transactionInfo.TransactionDate, TransactionModificationDate = DateTime.Now }); }
public async Task <Response> SaveProduct(ProductRequest productRequest) { if (productRequest == null) { throw new ArgumentNullException(nameof(productRequest)); } ProductAgg product = null; ControlTransactionFields transactionInfo = TransactionInfo.GetTransactionData(productRequest.UserName); IDbContextTransaction transaction = _bagelSalesControlContext.Database.BeginTransaction(); if (productRequest.ProductId != 0) { product = _bagelSalesControlContext.Product.ToList().Find(p => p.ProductId == productRequest.ProductId); } if (product == null) { product = MaterializeProduct(productRequest, transactionInfo); await _bagelSalesControlContext.AddAsync <ProductAgg>(product); } else { product.NameProduct = productRequest.NameProduct; product.InitialExistence = productRequest.InitialExistence; product.Existence = productRequest.Existence; product.PurchasePrice = productRequest.PurchasePrice; product.SalePrice = productRequest.SalePrice; product.Wholesaleprice = productRequest.Wholesaleprice; product.TransactionModificationDate = DateTime.Now; } await _bagelSalesControlContext.SaveChangesAsync(); transaction.Commit(); _bagelSalesControlContext.Dispose(); return(new Response { Data = product, Message = "Product Saved Successfully" }); }
private PaymentCalendar MaterializePaymentConfiguration(PaymentCalendarRequest paymentCalendarRequest, ControlTransactionFields transactionInfo) { return(new PaymentCalendar { PaymentDate = paymentCalendarRequest.PaymentDate, PaymentCalendarAmmount = paymentCalendarRequest.PaymentCalendarAmmount, TransactionDate = transactionInfo.TransactionDate, ComputerName = transactionInfo.ComputerName, UserTransaction = transactionInfo.UserTransaction }); }
private ResidentInformation MaterializeGeneralResidentInformation(ResidentRequest residentResquest, string residentId, ControlTransactionFields transactionInfo) { ResidentInformation residentInformation = new ResidentInformation.Builder(residentId, residentResquest.Name, residentResquest.LastName) .WithResidentInformationId(residentId) .WithName(residentResquest.Name) .WithLastName(residentResquest.LastName) .Build(); residentInformation.TransactionDate = transactionInfo.TransactionDate; residentInformation.ComputerName = transactionInfo.ComputerName; residentInformation.UserTransaction = transactionInfo.UserTransaction; return(residentInformation); }
private PhoneContact MaterializeContactInformation(ResidentRequest residentResquest, string residentId, ControlTransactionFields transactionInfo) { return(new PhoneContact { PhoneNumber = residentResquest.PhoneNumber, CountryCode = residentResquest.CountryCode, ResidentId = residentId, TransactionDate = transactionInfo.TransactionDate, ComputerName = transactionInfo.ComputerName, UserTransaction = transactionInfo.UserTransaction }); }
private EmailContact MaterializeEmailContact(ResidentRequest residentResquest, string residentId, ControlTransactionFields transactionInfo) { return(new EmailContact { Email = residentResquest.Email, ResidentId = residentId, TransactionDate = transactionInfo.TransactionDate, ComputerName = transactionInfo.ComputerName, UserTransaction = transactionInfo.UserTransaction }); }
private HouseInformation MaterializeHouseInformation(ResidentRequest residentResquest, string residentId, ControlTransactionFields transactionInfo) { return(new HouseInformation { HouseNumber = residentResquest.HouseNumber, BlockNumber = residentResquest.BlockNumber, ResidentId = residentId, TransactionDate = transactionInfo.TransactionDate, ComputerName = transactionInfo.ComputerName, UserTransaction = transactionInfo.UserTransaction }); }
public async Task <Response> SaveSale(SalesRequest salesRequest) { if (salesRequest == null) { throw new ArgumentNullException(nameof(salesRequest)); } string notification = ""; Sales sale = null; IDbContextTransaction transaction = _bagelSalesControlContext.Database.BeginTransaction(); ControlTransactionFields transactionInfo = TransactionInfo.GetTransactionData(salesRequest.UserName); if (salesRequest.SaleId != 0) { sale = _bagelSalesControlContext.Sales.ToList().Find(s => s.SaleId == salesRequest.SaleId); } if (sale == null) { sale = MaterializeSale(salesRequest, transactionInfo); await _bagelSalesControlContext.AddAsync <Sales>(sale); } else { sale.SoldQuantity = salesRequest.SoldQuantity; sale.TypeSale = salesRequest.TypeSale; sale.Total = salesRequest.Total; sale.Commentary = salesRequest.Commentary; sale.TransactionModificationDate = DateTime.Now; } ProductAgg product = _bagelSalesControlContext.Product.ToList().Find(p => p.ProductId == salesRequest.ProductId); if (product != null) { if (product.Existence < salesRequest.SoldQuantity) { notification = "No hay suficientes " + product.NameProduct + " disponibles"; return(new Response { Notification = notification }); } product.Existence = product.Existence - salesRequest.SoldQuantity; if (product.Existence <= 5) { notification = "El Producto " + product.NameProduct + " está a punto de acabarse"; } } await _bagelSalesControlContext.SaveChangesAsync(); transaction.Commit(); _bagelSalesControlContext.Dispose(); transaction.Dispose(); return(new Response { Message = "The sale was registered successfully", Data = sale, Notification = notification }); }