示例#1
0
        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!"
            });
        }
示例#4
0
        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
     });
 }
示例#7
0
 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
     });
 }
示例#8
0
        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
     });
 }
示例#10
0
        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);
        }
示例#11
0
 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
     });
 }
示例#12
0
 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
     });
 }
示例#13
0
 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
            });
        }