Ejemplo n.º 1
0
        public ApiResponse AddEditTransactionList(AddEditTransactionModel voucherTransactions, string userId)
        {
            ApiResponse response = new ApiResponse();

            List <VoucherTransactions> transactionsListAdd  = new List <VoucherTransactions>();
            List <VoucherTransactions> transactionsListEdit = new List <VoucherTransactions>();

            try
            {
                if (voucherTransactions.VoucherTransactions.Any())
                {
                    var editList = voucherTransactions.VoucherTransactions.Where(w => w.TransactionId != 0)
                                   .Select(s => s.TransactionId);

                    var editTransactionList = _dbContext.VoucherTransactions
                                              .Where(x => editList
                                                     .Contains(x.TransactionId))
                                              .ToList();

                    var voucherDetail = _dbContext.VoucherDetail.FirstOrDefault(x => x.IsDeleted == false && x.VoucherNo == voucherTransactions.VoucherNo);

                    if (voucherDetail != null)
                    {
                        foreach (VoucherTransactionsModel item in voucherTransactions.VoucherTransactions)
                        {
                            // Add
                            if (item.TransactionId == 0 && item.IsDeleted == false)
                            {
                                //new voucher transaction object
                                VoucherTransactions transaction = new VoucherTransactions();

                                transaction.ChartOfAccountNewId = item.AccountNo;
                                transaction.Debit           = item.Debit;
                                transaction.Credit          = item.Credit;
                                transaction.Description     = item.Description;
                                transaction.BudgetLineId    = item.BudgetLineId;
                                transaction.ProjectId       = item.ProjectId;
                                transaction.CreatedById     = userId;
                                transaction.CreatedDate     = DateTime.Now;
                                transaction.IsDeleted       = false;
                                transaction.VoucherNo       = item.VoucherNo;
                                transaction.CurrencyId      = voucherDetail.CurrencyId;
                                transaction.TransactionDate = voucherDetail.VoucherDate;
                                transaction.JobId           = item.JobId == 0 ? null : item.JobId;

                                transactionsListAdd.Add(transaction);
                            }
                            // edit
                            else
                            {
                                VoucherTransactions transaction = editTransactionList.FirstOrDefault(x => x.TransactionId == item.TransactionId);

                                if (transaction != null)
                                {
                                    if (item.IsDeleted == false)
                                    {
                                        transaction.IsDeleted = false;
                                    }
                                    else
                                    {
                                        transaction.IsDeleted = true;
                                    }
                                    transaction.TransactionId       = item.TransactionId;
                                    transaction.ChartOfAccountNewId = item.AccountNo;
                                    transaction.Debit           = item.Debit;
                                    transaction.Credit          = item.Credit;
                                    transaction.Description     = item.Description;
                                    transaction.BudgetLineId    = item.BudgetLineId;
                                    transaction.ProjectId       = item.ProjectId;
                                    transaction.JobId           = item.JobId == 0 ? null : item.JobId;
                                    transaction.CurrencyId      = voucherDetail.CurrencyId;
                                    transaction.TransactionDate = voucherDetail.VoucherDate;
                                    transaction.ModifiedById    = userId;
                                    transaction.ModifiedDate    = DateTime.Now;
                                    //transaction.VoucherNo = voucherTransactions.VoucherNo;

                                    transactionsListEdit.Add(transaction);
                                }
                            }
                        }

                        using (IDbContextTransaction tran = _dbContext.Database.BeginTransaction())
                        {
                            try
                            {
                                _dbContext.VoucherTransactions.AddRange(transactionsListAdd);
                                _dbContext.VoucherTransactions.UpdateRange(transactionsListEdit);

                                _dbContext.SaveChanges();
                                tran.Commit();
                            }

                            catch (Exception ex)
                            {
                                tran.Rollback();
                                response.StatusCode = StaticResource.failStatusCode;
                                response.Message    = StaticResource.SomethingWrong + ex.Message;
                                return(response);
                            }
                        }

                        response.StatusCode = StaticResource.successStatusCode;
                        response.Message    = StaticResource.SuccessText;
                    }
                    else
                    {
                        response.StatusCode = StaticResource.failStatusCode;
                        response.Message    = StaticResource.VoucherNotPresent;
                    }
                }
                else
                {
                    response.StatusCode = StaticResource.failStatusCode;
                    response.Message    = StaticResource.SomethingWrong;
                }
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
            }
            return(response);
        }
        public async Task <ApiResponse> Handle(VerifyPurchaseCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();

            try
            {
                if (request != null)
                {
                    var purchaseRecord = await _dbContext.StoreItemPurchases.FirstOrDefaultAsync(x => x.PurchaseId == request.PurchaseId);

                    if (purchaseRecord != null)
                    {
                        _mapper.Map(request, purchaseRecord);

                        if (!string.IsNullOrEmpty(request.ImageFileName))
                        {
                            if (request.ImageFileName.Contains(","))
                            {
                                string[] str      = request.ImageFileName.Split(",");
                                byte[]   filepath = Convert.FromBase64String(str[1]);
                                string   ex       = str[0].Split("/")[1].Split(";")[0];
                                string   guidname = Guid.NewGuid().ToString();
                                string   filename = guidname + "." + ex;
                                var      pathFile = Path.Combine(Directory.GetCurrentDirectory(), @"Documents/") + filename;
                                File.WriteAllBytes(@"Documents/" + filename, filepath);

                                purchaseRecord.ImageFileName = guidname;
                                purchaseRecord.ImageFileType = "." + ex;
                            }
                        }

                        if (request.InvoiceFileName != null && request.InvoiceFileName != "")
                        {
                            if (request.InvoiceFileName.Contains(","))
                            {
                                string[] str      = request.InvoiceFileName.Split(",");
                                byte[]   filepath = Convert.FromBase64String(str[1]);
                                string   ex       = str[0].Split("/")[1].Split(";")[0];
                                string   guidname = Guid.NewGuid().ToString();
                                string   filename = guidname + "." + ex;
                                var      pathFile = Path.Combine(Directory.GetCurrentDirectory(), @"Documents/") + filename;
                                File.WriteAllBytes(@"Documents/" + filename, filepath);

                                purchaseRecord.InvoiceFileName = guidname;
                                purchaseRecord.InvoiceFileType = "." + ex;
                            }
                        }

                        purchaseRecord.IsDeleted = false;


                        //List<ExchangeRate> exchangeRate = new List<ExchangeRate>();

                        if (request.IsPurchaseVerified.HasValue && request.IsPurchaseVerified.Value)
                        {
                            var financialYearDetails = _dbContext.FinancialYearDetail.FirstOrDefault(x => x.IsDeleted == false && x.StartDate.Date.Year == DateTime.Now.Year);
                            var inventory            = _dbContext.InventoryItems.Include(x => x.Inventory).FirstOrDefault(x => x.ItemId == request.InventoryItem);
                            var paymentTypes         = _dbContext.PaymentTypes.FirstOrDefault(x => x.PaymentId == request.PaymentTypeId);

                            #region "Generate Voucher"
                            VoucherDetailModel voucherModel = new VoucherDetailModel
                            {
                                CurrencyId                = request.Currency,
                                Description               = StaticResource.PurchaseVoucherCreated,
                                JournalCode               = request.JournalCode,
                                VoucherTypeId             = (int)VoucherTypes.Journal,
                                OfficeId                  = request.OfficeId,
                                ProjectId                 = request.ProjectId,
                                BudgetLineId              = request.BudgetLineId,
                                IsExchangeGainLossVoucher = false,
                                CreatedById               = request.CreatedById,
                                CreatedDate               = DateTime.UtcNow,
                                IsDeleted                 = false,
                                FinancialYearId           = financialYearDetails.FinancialYearId,
                                VoucherDate               = DateTime.UtcNow,
                                TimezoneOffset            = request.TimezoneOffset
                            };

                            var responseVoucher = await _iStoreServices.AddVoucherNewDetail(voucherModel);

                            #endregion

                            if (responseVoucher.StatusCode == 200)
                            {
                                purchaseRecord.VerifiedPurchaseVoucher = responseVoucher.data.VoucherDetailEntity.VoucherNo;
                                await _dbContext.SaveChangesAsync();

                                List <VoucherTransactionsModel> transactions = new List <VoucherTransactionsModel>();

                                // Credit
                                transactions.Add(new VoucherTransactionsModel
                                {
                                    TransactionId = 0,
                                    VoucherNo     = responseVoucher.data.VoucherDetailEntity.VoucherNo,
                                    AccountNo     = paymentTypes.ChartOfAccountNewId,
                                    Debit         = 0,
                                    Credit        = request.UnitCost * request.Quantity,
                                    Description   = StaticResource.PurchaseVoucherCreated,
                                    IsDeleted     = false
                                });

                                // Debit
                                transactions.Add(new VoucherTransactionsModel
                                {
                                    TransactionId = 0,
                                    VoucherNo     = responseVoucher.data.VoucherDetailEntity.VoucherNo,
                                    AccountNo     = inventory.Inventory.InventoryDebitAccount,
                                    Debit         = request.UnitCost * request.Quantity,
                                    Credit        = 0,
                                    Description   = StaticResource.PurchaseVoucherCreated,
                                    IsDeleted     = false
                                });

                                AddEditTransactionModel transactionVoucherDetail = new AddEditTransactionModel
                                {
                                    VoucherNo           = responseVoucher.data.VoucherDetailEntity.VoucherNo,
                                    VoucherTransactions = transactions
                                };
                                var responseTransaction = _iStoreServices.AddEditTransactionList(transactionVoucherDetail, request.CreatedById);

                                if (responseTransaction.StatusCode == 200)
                                {
                                    response.StatusCode = StaticResource.successStatusCode;
                                    response.Message    = StaticResource.SuccessText;
                                }
                                else
                                {
                                    throw new Exception(responseTransaction.Message);
                                }
                            }
                            else
                            {
                                response.StatusCode = StaticResource.failStatusCode;
                                response.Message    = responseVoucher.Message;
                            }
                        }
                    }
                    else
                    {
                        response.StatusCode = StaticResource.failStatusCode;
                        response.Message    = "Record cannot be updated";
                        return(response);
                    }
                }
                else
                {
                    response.StatusCode = StaticResource.failStatusCode;
                    response.Message    = "request values are inappropriate";
                    return(response);
                }
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
                return(response);
            }
            return(response);
        }
Ejemplo n.º 3
0
        public async Task <ApiResponse> Handle(UnverifyPurchaseCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();

            try
            {
                if (request != null)
                {
                    var purchaseRecord = await _dbContext.StoreItemPurchases.FirstOrDefaultAsync(x => x.PurchaseId == request.PurchaseId);

                    if (purchaseRecord != null)
                    {
                        _mapper.Map(request, purchaseRecord);

                        if (!string.IsNullOrEmpty(request.ImageFileName))
                        {
                            if (request.ImageFileName.Contains(","))
                            {
                                string[] str      = request.ImageFileName.Split(",");
                                byte[]   filepath = Convert.FromBase64String(str[1]);
                                string   ex       = str[0].Split("/")[1].Split(";")[0];
                                string   guidname = Guid.NewGuid().ToString();
                                string   filename = guidname + "." + ex;
                                var      pathFile = Path.Combine(Directory.GetCurrentDirectory(), @"Documents/") + filename;
                                File.WriteAllBytes(@"Documents/" + filename, filepath);

                                purchaseRecord.ImageFileName = guidname;
                                purchaseRecord.ImageFileType = "." + ex;
                            }
                        }

                        if (request.InvoiceFileName != null && request.InvoiceFileName != "")
                        {
                            if (request.InvoiceFileName.Contains(","))
                            {
                                string[] str      = request.InvoiceFileName.Split(",");
                                byte[]   filepath = Convert.FromBase64String(str[1]);
                                string   ex       = str[0].Split("/")[1].Split(";")[0];
                                string   guidname = Guid.NewGuid().ToString();
                                string   filename = guidname + "." + ex;
                                var      pathFile = Path.Combine(Directory.GetCurrentDirectory(), @"Documents/") + filename;
                                File.WriteAllBytes(@"Documents/" + filename, filepath);

                                purchaseRecord.InvoiceFileName = guidname;
                                purchaseRecord.InvoiceFileType = "." + ex;
                            }
                        }

                        purchaseRecord.IsDeleted = false;

                        if (request.IsPurchaseVerified.HasValue && !request.IsPurchaseVerified.Value)
                        {
                            VoucherDetail voucherDetail = _dbContext.VoucherDetail.FirstOrDefault(x => x.IsDeleted == false && x.VoucherNo == request.VerifiedPurchaseVoucher);

                            if (voucherDetail != null)
                            {
                                List <VoucherTransactions> voucherTransactionsList = await _dbContext.VoucherTransactions.Where(x => x.IsDeleted == false && x.VoucherNo == request.VerifiedPurchaseVoucher).ToListAsync();

                                var creditTransaction = voucherTransactionsList.FirstOrDefault(x => x.Debit == 0);
                                var debitTransaction  = voucherTransactionsList.FirstOrDefault(x => x.Credit == 0);

                                List <VoucherTransactionsModel> transactions = new List <VoucherTransactionsModel>();

                                // Credit
                                transactions.Add(new VoucherTransactionsModel
                                {
                                    TransactionId = 0,
                                    VoucherNo     = voucherDetail.VoucherNo,
                                    AccountNo     = debitTransaction.ChartOfAccountNewId,
                                    Debit         = 0,
                                    Credit        = debitTransaction.Debit,
                                    Description   = StaticResource.PurchaseVoucherCreated,
                                    IsDeleted     = false
                                });

                                // Debit
                                transactions.Add(new VoucherTransactionsModel
                                {
                                    TransactionId = 0,
                                    VoucherNo     = voucherDetail.VoucherNo,
                                    AccountNo     = creditTransaction.ChartOfAccountNewId,
                                    Debit         = creditTransaction.Credit,
                                    Credit        = 0,
                                    Description   = StaticResource.PurchaseVoucherCreated,
                                    IsDeleted     = false
                                });

                                AddEditTransactionModel transactionVoucherDetail = new AddEditTransactionModel
                                {
                                    VoucherNo           = voucherDetail.VoucherNo,
                                    VoucherTransactions = transactions
                                };
                                // StoreServices storeObj = new StoreServices(_dbContext);
                                var responseTransaction = _iStoreServices.AddEditTransactionList(transactionVoucherDetail, request.CreatedById);

                                if (responseTransaction.StatusCode == 200)
                                {
                                    response.StatusCode = StaticResource.successStatusCode;
                                    response.Message    = StaticResource.SuccessText;
                                }
                                else
                                {
                                    throw new Exception(responseTransaction.Message);
                                }


                                response.StatusCode = StaticResource.successStatusCode;
                                response.Message    = "Success";
                            }
                            else
                            {
                                throw new Exception(" Voucher Not Found on Verified Purchase");
                            }
                        }
                        else
                        {
                            await _dbContext.SaveChangesAsync();
                        }
                    }
                    else
                    {
                        response.StatusCode = StaticResource.failStatusCode;
                        response.Message    = "Record cannot be updated";
                        return(response);
                    }
                }
                else
                {
                    response.StatusCode = StaticResource.failStatusCode;
                    response.Message    = "request values are inappropriate";
                    return(response);
                }
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
                return(response);
            }
            return(response);
        }