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