public async Task <BidAndTenderRespObj> Handle(GetPreviousBidAndTenderQuery request, CancellationToken cancellationToken) { var result = await _repo.GetAllPrevSupplierBidAndTender(request.SupplierEmail); var response = new BidAndTenderRespObj { Status = new APIResponseStatus { Message = new APIResponseMessage() } }; CompanyStructureRespObj _Department = new CompanyStructureRespObj(); if (result.Count() > 0) { _Department = await _serverRequest.GetAllCompanyStructureAsync(); } response.BidAndTenders = result?.Where(a => a.ApprovalStatusId == (int)ApprovalStatus.Approved || a.ApprovalStatusId == (int)ApprovalStatus.Pending) .Select(d => new BidAndTenderObj { BidAndTenderId = d.BidAndTenderId, AmountApproved = d.AmountApproved, DateSubmitted = d.DateSubmitted, DecisionResult = d.DecisionResult, DescriptionOfRequest = d?.DescriptionOfRequest, Location = d?.Location, LPOnumber = d?.LPOnumber, ProposalTenderUploadType = d.ProposalTenderUploadType, ProposalTenderUploadPath = d.ProposalTenderUploadPath, ProposalTenderUploadName = d.ProposalTenderUploadName, ProposalTenderUploadFullPath = d.ProposalTenderUploadFullPath, ExpectedDeliveryDate = d.ExpectedDeliveryDate, ProposedAmount = d.ProposedAmount.ToString(), RequestDate = d.RequestDate, RequestingDepartment = d.RequestingDepartment, SupplierName = d?.SupplierName, Suppliernumber = d?.Suppliernumber, DecisionReultName = Convert.ToString((DecisionResult)d.DecisionResult), Quantity = d.Quantity, Total = d.Total, ApprovalStatusId = d.ApprovalStatusId, SupplierId = d.SupplierId, WorkflowToken = d.WorkflowToken, SupplierAddress = d.SupplierAddress, RequestingDepartmentName = _Department.companyStructures.FirstOrDefault(e => e.CompanyStructureId == d.RequestingDepartment)?.Name, }).ToList() ?? new List <BidAndTenderObj>(); response.Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = result.Count() > 0 ? null : "Search Complete! No Record found" } }; return(response); }
public async Task <BidAndTenderRespObj> Handle(GetAvailableBidsQuery request, CancellationToken cancellationToken) { var result = await _repo.GetAllBidAndTender(); var statusPendingList = result.Where(s => s.ApprovalStatusId == (int)ApprovalStatus.Pending); CompanyStructureRespObj _Department = new CompanyStructureRespObj(); _Department = await _serverRequest.GetAllCompanyStructureAsync(); return(new BidAndTenderRespObj { BidAndTenders = result.Where(a => a.ApprovalStatusId != (int)ApprovalStatus.Disapproved && (int)ApprovalStatus.Authorised != a.ApprovalStatusId && a.SupplierId != 0).OrderByDescending(q => q.BidAndTenderId).Select(d => new BidAndTenderObj { BidAndTenderId = d.BidAndTenderId, AmountApproved = d.AmountApproved, DateSubmitted = d.DateSubmitted, DecisionResult = d.DecisionResult, DescriptionOfRequest = d?.DescriptionOfRequest, Location = d?.Location, LPOnumber = d?.LPOnumber, ProposedAmount = d.ProposedAmount.ToString(), RequestDate = d.RequestDate, RequestingDepartment = d.RequestingDepartment, SupplierName = d?.SupplierName, Suppliernumber = d?.Suppliernumber, DecisionReultName = Convert.ToString((DecisionResult)d.DecisionResult), Quantity = d.Quantity, Total = d.Total, ApprovalStatusId = d.ApprovalStatusId, SupplierId = d.SupplierId, WorkflowToken = d.WorkflowToken, ProposalTenderUploadType = d.ProposalTenderUploadType, ProposalTenderUploadPath = d.ProposalTenderUploadPath, ProposalTenderUploadName = d.ProposalTenderUploadName, ProposalTenderUploadFullPath = d.ProposalTenderUploadFullPath, ExpectedDeliveryDate = d.ExpectedDeliveryDate, StatusName = Convert.ToString((ApprovalStatus)d.ApprovalStatusId), RequestingDepartmentName = _Department.companyStructures.FirstOrDefault(e => e.CompanyStructureId == d.RequestingDepartment)?.Name, }).ToList() ?? new List <BidAndTenderObj>(), Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = result.Count() > 0 ? null : "Search Complete! No Record found" } } }); }
public async Task <BidAndTenderRespObj> Handle(GetSupplierAdvertsNotBiddenForQuery request, CancellationToken cancellationToken) { var response = new BidAndTenderRespObj { Status = new APIResponseStatus { Message = new APIResponseMessage() } }; CompanyStructureRespObj _Department = new CompanyStructureRespObj(); var resp = new List <BidAndTenderObj>(); _Department = await _serverRequest.GetAllCompanyStructureAsync(); var domainList = _dataContext.cor_bid_and_tender.ToList().GroupBy(w => w.BidAndTenderId).Select(q => q.First()).Where(r => r.ApprovalStatusId == (int)ApprovalStatus.Awaiting).ToArray(); response.BidAndTenders = domainList?.OrderByDescending(a => a.BidAndTenderId).Where(r => r.ApprovalStatusId == (int)ApprovalStatus.Awaiting && r.SupplierId == 0) .Select(d => new BidAndTenderObj { BidAndTenderId = d.BidAndTenderId, AmountApproved = d.AmountApproved, DateSubmitted = d.DateSubmitted, DecisionResult = d.DecisionResult, DescriptionOfRequest = d?.DescriptionOfRequest, Location = d?.Location, LPOnumber = d?.LPOnumber, ExpectedDeliveryDate = d.ExpectedDeliveryDate, RequestDate = d.RequestDate, RequestingDepartment = d.RequestingDepartment, SupplierName = d?.SupplierName, Suppliernumber = d?.Suppliernumber, Quantity = d.Quantity, Total = d.Total, ApprovalStatusId = d.ApprovalStatusId, SupplierId = d.SupplierId, WorkflowToken = d.WorkflowToken, Comment = d.Comment, SupplierAddress = d.SupplierAddress, RequestingDepartmentName = d.RequestingDepartment > 0? _Department.companyStructures.FirstOrDefault(e => e.CompanyStructureId == d.RequestingDepartment)?.Name : string.Empty, PLPOId = d.PLPOId, PRNId = d.PurchaseReqNoteId, }).ToList() ?? new List <BidAndTenderObj>(); return(response); }
public async Task <RequisitionNoteRespObj> Handle(GetAllPRNQuery request, CancellationToken cancellationToken) { var prn = await _repo.GetAllPurchaseRequisitionNoteAsync(); var _Department = await _serverRequest.GetAllCompanyStructureAsync(); var user = await _serverRequest.UserDataAsync(); return(new RequisitionNoteRespObj { RequisitionNotes = prn.Where(q => q.StaffId == user.StaffId).OrderByDescending(r => r.PurchaseReqNoteId).Select(d => new RequisitionNoteObj { ApprovalStatusId = d.ApprovalStatusId, Comment = d.Comment, DeliveryLocation = d.DeliveryLocation, DepartmentId = d.DepartmentId, Description = d.Description, DocumentNumber = d.DocumentNumber, ExpectedDeliveryDate = d.ExpectedDeliveryDate, IsFundAvailable = d.IsFundAvailable, PurchaseReqNoteId = d.PurchaseReqNoteId, RequestBy = d.RequestBy, StatusName = Convert.ToString((ApprovalStatus)d.ApprovalStatusId), Total = d.Total, WorkflowToken = d.WorkflowToken, RequestDate = d.CreatedOn, PRNNumber = d.PRNNumber, DepartmentName = _Department.companyStructures.FirstOrDefault(c => c.CompanyStructureId == d.DepartmentId)?.Name, DetailsCount = d.purch_prndetails.Count() }).ToList(), Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = prn.Count() < 1 ? "No PRN awaiting approvals" : null } } }); }
public async Task <ProposalPaymentRespObj> Handle(GetRequestedPaymentsAwaitingApprovalQuery request, CancellationToken cancellationToken) { try { var result = await _serverRequest.GetAnApproverItemsFromIdentityServer(); if (!result.IsSuccessStatusCode) { var data1 = await result.Content.ReadAsStringAsync(); var res1 = JsonConvert.DeserializeObject <WorkflowTaskRespObj>(data1); return(new ProposalPaymentRespObj { Status = new APIResponseStatus { IsSuccessful = false, Message = new APIResponseMessage { FriendlyMessage = $"{result.ReasonPhrase} {result.StatusCode}" } } }); } var data = await result.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject <WorkflowTaskRespObj>(data); if (res == null) { return(new ProposalPaymentRespObj { Status = res.Status }); } if (res.workflowTasks.Count() < 1) { return(new ProposalPaymentRespObj { Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = "No Pending Approval" } } }); } CompanyStructureRespObj _Department = new CompanyStructureRespObj(); _Department = await _serverRequest.GetAllCompanyStructureAsync(); var paymentTerms = await _repo.GetPaymenttermsAsync(); var bids = await _repo.GetAllBidAndTender(); var staffRequestedPaymentsawaiting = await _repo.GetRequestedPaymentsAwaitingApprovalAsync(res.workflowTasks.Select(x => x.TargetId).ToList(), res.workflowTasks.Select(s => s.WorkflowToken).ToList()); //var RequestedPaymentss = await _repo.GetAllPurchaseRequisitionNoteAsync(); var payments = staffRequestedPaymentsawaiting.Select(d => new ProposalPayment { PaymentTermId = d.PaymentTermId, Completion = d.Completion, Amount = d.Amount, NetAmount = d.NetAmount, Payment = d.Payment, PaymentStatus = d.PaymentStatus, PaymentStatusName = Convert.ToString(d.PaymentStatus), Phase = d.Phase, PhaseName = Convert.ToString((PaymentTermsPhase)d.Phase), ProjectStatusDescription = d.ProjectStatusDescription, Status = d.Status, StatusName = Convert.ToString((JobProgressStatus)d.Status), Comment = d.Comment, AmountPaid = 0, LPOId = d.LPOId, AmountPayable = d.NetAmount, PaymentOutstanding = d.NetAmount, }).ToList(); if (payments.Count() > 0) { foreach (var item in payments) { var alreadyPaidPhases = _dataContext.cor_paymentterms.Where(a => a.LPOId == item.LPOId && a.ProposedBy == (int)Proposer.STAFF && a.PaymentStatus == (int)PaymentStatus.Paid).ToList(); if (alreadyPaidPhases.Count() > 0) { item.AmountPaid = alreadyPaidPhases.Sum(f => f.NetAmount); item.PaymentOutstanding = (item.AmountPayable - alreadyPaidPhases.Sum(f => f.NetAmount)); } } } return(new ProposalPaymentRespObj { ProposalPayment = payments, Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = staffRequestedPaymentsawaiting.Count() > 0 ? "" : "Search Complete : No Payment awaitingt approvals" } } }); } catch (SqlException ex) { throw ex; } }
public async Task <BidAndTenderRespObj> Handle(GetBidAndTenderByIdQuery request, CancellationToken cancellationToken) { CompanyStructureRespObj _Department = new CompanyStructureRespObj(); _Department = await _serverRequest.GetAllCompanyStructureAsync(); var d = await _repo.GetBidAndTender(request.BidAndTenderID); var prn = await _repo.GetAllPurchaseRequisitionNoteAsync(); var itemList = new List <BidAndTenderObj>(); if (d != null) { var item = new BidAndTenderObj { BidAndTenderId = d.BidAndTenderId, AmountApproved = d.AmountApproved, DateSubmitted = d.DateSubmitted, DecisionResult = d.DecisionResult, DescriptionOfRequest = d?.DescriptionOfRequest, Location = d?.Location, LPOnumber = d?.LPOnumber, ProposalTenderUploadType = d.ProposalTenderUploadType, ProposalTenderUploadPath = d.ProposalTenderUploadPath, ProposalTenderUploadName = d.ProposalTenderUploadName, ProposalTenderUploadFullPath = d.ProposalTenderUploadFullPath, ExpectedDeliveryDate = d.ExpectedDeliveryDate, ProposedAmount = d.ProposedAmount.ToString(), RequestDate = d.RequestDate, RequestingDepartment = d.RequestingDepartment, SupplierName = d?.SupplierName, Suppliernumber = d?.Suppliernumber, Quantity = d.Quantity, Total = d.Total, PLPOId = d.PLPOId, Comment = d.Comment, SupplierId = d.SupplierId, WorkflowToken = d.WorkflowToken, RequisitionNotes = prn.Where(a => a.PurchaseReqNoteId == d.PurchaseReqNoteId).Select(v => new RequisitionNoteObj { ApprovalStatusId = v.ApprovalStatusId, Comment = v.Comment, DeliveryLocation = v.DeliveryLocation, DepartmentId = v.DepartmentId, Description = v.Description, DocumentNumber = v.DocumentNumber, ExpectedDeliveryDate = v.ExpectedDeliveryDate, IsFundAvailable = v.IsFundAvailable, PurchaseReqNoteId = v.PurchaseReqNoteId, RequestBy = v.RequestBy, StatusName = Convert.ToString((ApprovalStatus)v.ApprovalStatusId), Total = v.Total, RequestDate = v.CreatedOn, WorkflowToken = v.WorkflowToken, PRNNumber = v.PRNNumber, DetailsCount = v.purch_prndetails.Count(), }).ToList(), RequestingDepartmentName = _Department.companyStructures.FirstOrDefault(e => e.CompanyStructureId == d.RequestingDepartment)?.Name, PaymentTerms = d.Paymentterms.Select(b => new PaymentTermsObj { BidAndTenderId = b.BidAndTenderId, Comment = b.Comment, Completion = b.Completion, Amount = b.Amount, NetAmount = b.NetAmount, Payment = b.Payment, PaymentStatus = b.PaymentStatus, Phase = b.Phase, PaymentTermId = b.PaymentTermId, Status = b.Status, ProposedBy = b.ProposedBy, ProjectStatusDescription = b.ProjectStatusDescription, }).ToList(), }; itemList.Add(item); } return(new BidAndTenderRespObj { BidAndTenders = itemList, Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = itemList.Count() > 0 ? null : "Search Complete! No Record found" } } }); }
public async Task <PaymentTermsRegRespObj> Handle(SendPaymentInvoiceToApprovalCommand request, CancellationToken cancellationToken) { var apiResponse = new PaymentTermsRegRespObj { Status = new APIResponseStatus { IsSuccessful = false, Message = new APIResponseMessage() } }; try { var paymentprop = await _repo.GetSinglePaymenttermAsync(request.PaymentTermId); if (paymentprop == null) { apiResponse.Status.Message.FriendlyMessage = $"Proposal Not found"; return(apiResponse); } if (paymentprop.PaymentStatus == (int)PaymentStatus.Paid) { apiResponse.Status.Message.FriendlyMessage = "Payment already made for this phase"; return(apiResponse); } if (paymentprop.ApprovalStatusId == (int)ApprovalStatus.Processing) { apiResponse.Status.Message.FriendlyMessage = "Payment In Process"; return(apiResponse); } var invoice = await _invoice.GetInvoiceByPhaseAsync(paymentprop.PaymentTermId); if (invoice == null) { apiResponse.Status.Message.FriendlyMessage = "Invoice not found"; return(apiResponse); } if (invoice.ApprovalStatusId != (int)ApprovalStatus.Approved) { if (invoice.ApprovalStatusId != (int)ApprovalStatus.Pending) { apiResponse.Status.Message.FriendlyMessage = $"Unable to push invoice with status '{Convert.ToString((ApprovalStatus)invoice.ApprovalStatusId)}' for approval"; return(apiResponse); } } var companies = await _serverRequest.GetAllCompanyStructureAsync(); var currentCompanyCurrency = companies.companyStructures.FirstOrDefault(q => q.CompanyStructureId == invoice.CompanyId); if (currentCompanyCurrency == null) { apiResponse.Status.Message.FriendlyMessage = "Unable to Identify Company"; return(apiResponse); } invoice.CurrencyId = currentCompanyCurrency.ReportCurrencyId ?? 0; invoice.PaymentBankId = request.PaymentBankId; invoice.SupplierBankId = request.SupplierBankId; var user = await _serverRequest.UserDataAsync(); using (var _transaction = await _dataContext.Database.BeginTransactionAsync()) { try { var targetList = new List <int>(); targetList.Add(invoice.InvoiceId); GoForApprovalRequest wfRequest = new GoForApprovalRequest { Comment = "Invoice Payment Phase", OperationId = (int)OperationsEnum.PaymentApproval, TargetId = targetList, ApprovalStatus = (int)ApprovalStatus.Pending, DeferredExecution = true, StaffId = user.StaffId, CompanyId = user.CompanyId, EmailNotification = true, ExternalInitialization = false, StatusId = (int)ApprovalStatus.Processing, }; var result = await _serverRequest.GotForApprovalAsync(wfRequest); if (!result.IsSuccessStatusCode) { apiResponse.Status.Message.FriendlyMessage = $"{result.ReasonPhrase} {result.StatusCode}"; return(apiResponse); } var stringData = await result.Content.ReadAsStringAsync(); GoForApprovalRespObj res = JsonConvert.DeserializeObject <GoForApprovalRespObj>(stringData); if (res.ApprovalProcessStarted) { invoice.ApprovalStatusId = (int)ApprovalStatus.Processing; invoice.WorkflowToken = res.Status.CustomToken; paymentprop.ApprovalStatusId = (int)ApprovalStatus.Processing; await _repo.AddUpdatePaymentTermsAsync(paymentprop); await _invoice.CreateUpdateInvoiceAsync(invoice); await _transaction.CommitAsync(); apiResponse.PaymentTermId = invoice.PaymentTermId; apiResponse.Status = res.Status; return(apiResponse); } if (res.EnableWorkflow || !res.HasWorkflowAccess) { await _transaction.RollbackAsync(); apiResponse.Status.Message = res.Status.Message; return(apiResponse); } if (!res.EnableWorkflow) { invoice.ApprovalStatusId = (int)ApprovalStatus.Approved; var thisInvoicePhase = await _repo.GetSinglePaymenttermAsync(invoice.PaymentTermId); thisInvoicePhase.PaymentStatus = (int)PaymentStatus.Paid; thisInvoicePhase.CompletionDate = DateTime.Now; thisInvoicePhase.ApprovalStatusId = (int)ApprovalStatus.Approved; var paymentResp = await _invoice.TransferPaymentAsync(invoice); if (!paymentResp.Status.IsSuccessful) { await _transaction.RollbackAsync(); apiResponse.Status.IsSuccessful = false; apiResponse.Status.Message.FriendlyMessage = paymentResp.Status.Message.FriendlyMessage; return(apiResponse); } await _repo.AddUpdatePaymentTermsAsync(thisInvoicePhase); invoice.AmountPaid = invoice.Amount; await _invoice.CreateUpdateInvoiceAsync(invoice); var entryRequest = _invoice.BuildSupplierSecondEntryRequestObject(invoice); var entry = await _financeServer.PassEntryAsync(entryRequest); if (!entry.Status.IsSuccessful) { await _transaction.RollbackAsync(); apiResponse.Status.IsSuccessful = false; apiResponse.Status.Message.FriendlyMessage = $"{entry.Status.Message.FriendlyMessage}"; return(apiResponse); } await _repo.SendEmailToSupplierDetailingPaymentAsync(invoice, thisInvoicePhase.Phase); await _transaction.CommitAsync(); apiResponse.Status.IsSuccessful = true; apiResponse.Status.Message.FriendlyMessage = $"Payment Successful"; return(apiResponse); } apiResponse.Status = res.Status; return(apiResponse); } catch (Exception ex) { await _transaction.RollbackAsync(); #region Log error to file var errorCode = ErrorID.Generate(4); _logger.Error($"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}"); return(new PaymentTermsRegRespObj { Status = new APIResponseStatus { Message = new APIResponseMessage { FriendlyMessage = "Error occured!! Please try again later", MessageId = errorCode, TechnicalMessage = $"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}" } } }); #endregion } finally { await _transaction.DisposeAsync(); } } } catch (Exception ex) { #region Log error to file var errorCode = ErrorID.Generate(4); _logger.Error($"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}"); return(new PaymentTermsRegRespObj { Status = new APIResponseStatus { Message = new APIResponseMessage { FriendlyMessage = "Error occured!! Please try again later", MessageId = errorCode, TechnicalMessage = $"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}" } } }); #endregion } }
public async Task <LPOReport> Handle(LPOReportQuery request, CancellationToken cancellationToken) { var response = new LPOReport { Phases = new List <Phases>(), ServiceTerm = new ServiceTerm(), From = new From(), To = new To(), Status = new APIResponseStatus { Message = new APIResponseMessage(), IsSuccessful = true, }, }; try { var staff = await _serverRequest.GetAllStaffAsync(); var lpo = _dataContext.purch_plpo.FirstOrDefault(q => q.PLPOId == request.LPOId); var prn = _dataContext.purch_requisitionnote.FirstOrDefault(q => q.PurchaseReqNoteId == lpo.PurchaseReqNoteId); var serviceterms = _dataContext.cor_serviceterms.Where(q => q.ServiceTermsId == lpo.ServiceTerm).Select(w => new ServiceTerm { Content = w.Content, Header = w.Header }).ToList() ?? new List <ServiceTerm>(); var phases = _dataContext.cor_paymentterms.Where(w => w.LPOId == lpo.PLPOId && w.ProposedBy == (int)Proposer.STAFF).Select(w => new Phases { Amount = w.Amount, Tax = w.TaxPercent, Phase = w.Phase }).ToList(); var companies = await _serverRequest.GetAllCompanyStructureAsync(); var to = companies.companyStructures.Where(e => e.ParentCompanyID == 0).Select(r => new To { Address = r.Address1, Name = r.Name, Number = r.Telephone }).ToList(); var from = _dataContext.cor_supplier.Where(q => q.SupplierId == lpo.WinnerSupplierId).Select(s => new From { SupplierId = s.SupplierId, Address = s.Address, Name = s.Name, Number = s.SupplierNumber }).ToList(); response.AmountPayable = lpo.AmountPayable; response.GrossAmount = lpo.GrossAmount; response.LPONumber = lpo.LPONumber; response.Quantity = lpo.Quantity; response.RequestDate = lpo.RequestDate; response.TaxAmount = lpo.Tax; response.From = from.FirstOrDefault(); response.ServiceTerm = serviceterms.FirstOrDefault(); response.Phases = phases; response.Description = lpo.Description; response.Tax = lpo.Tax; response.To = to.FirstOrDefault(); return(response); } catch (Exception ex) { response.Status.IsSuccessful = false; response.Status.Message.FriendlyMessage = ex.Message; return(response); } }
public async Task <BidAndTenderRespObj> Handle(GetBidAndTenderAwaitingApprovalQuery request, CancellationToken cancellationToken) { try { var response = new BidAndTenderRespObj { Status = new APIResponseStatus { Message = new APIResponseMessage() } }; CompanyStructureRespObj _Department = new CompanyStructureRespObj(); _Department = await _serverRequest.GetAllCompanyStructureAsync(); var result = await _serverRequest.GetAnApproverItemsFromIdentityServer(); if (!result.IsSuccessStatusCode) { var data1 = await result.Content.ReadAsStringAsync(); var res1 = JsonConvert.DeserializeObject <WorkflowTaskRespObj>(data1); response.Status.IsSuccessful = false; response.Status.Message.FriendlyMessage = $"{result.ReasonPhrase} {result.StatusCode}"; return(response); } var data = await result.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject <WorkflowTaskRespObj>(data); if (res == null) { response.Status = res.Status; return(response); } if (res.workflowTasks.Count() < 1) { response.Status.IsSuccessful = true; response.Status.Message.FriendlyMessage = "No Pending Approval"; return(response); } var staffBidawaiting = await _repo.GetBidAndTenderAwaitingApprovalAsync(res.workflowTasks.Select(x => x.TargetId).ToList(), res.workflowTasks.Select(s => s.WorkflowToken).ToList()); var paymentTerms = await _repo.GetPaymenttermsAsync(); var requisitions = await _repo.GetAllPurchaseRequisitionNoteAsync(); response.BidAndTenders = staffBidawaiting?.Where(w => w.ApprovalStatusId != (int)ApprovalStatus.Disapproved).Select(d => new BidAndTenderObj { BidAndTenderId = d.BidAndTenderId, AmountApproved = d.AmountApproved, DateSubmitted = d.DateSubmitted, DecisionResult = d.DecisionResult, DescriptionOfRequest = d?.DescriptionOfRequest, Location = d?.Location, LPOnumber = d?.LPOnumber, ProposalTenderUploadType = d.ProposalTenderUploadType, ProposalTenderUploadPath = d.ProposalTenderUploadPath, ProposalTenderUploadName = d.ProposalTenderUploadName, ProposalTenderUploadFullPath = d.ProposalTenderUploadFullPath, ProposedAmount = d.ProposedAmount.ToString(), RequestDate = d.RequestDate, RequestingDepartment = d.RequestingDepartment, SupplierName = d?.SupplierName, Suppliernumber = d?.Suppliernumber, DecisionReultName = Convert.ToString((DecisionResult)d.DecisionResult), Quantity = d.Quantity, SupplierId = d.SupplierId, PLPOId = d.PLPOId, Total = d.Total, ApprovalStatusId = d.ApprovalStatusId, WorkflowToken = d.WorkflowToken, ExpectedDeliveryDate = d.ExpectedDeliveryDate, SupplierAddress = d.SupplierAddress, PRNId = d.PurchaseReqNoteId, RequestingDepartmentName = _Department.companyStructures.FirstOrDefault(e => e.CompanyStructureId == d.RequestingDepartment)?.Name, RequisitionNotes = _dataContext.purch_requisitionnote.Where(q => q.PurchaseReqNoteId == d.PurchaseReqNoteId).Select(w => new RequisitionNoteObj { PurchaseReqNoteId = w.PurchaseReqNoteId, ApprovalStatusId = w.ApprovalStatusId, Comment = w.Comment, DeliveryLocation = w.DeliveryLocation, DepartmentId = w.DepartmentId, Description = w.Description, DocumentNumber = w.DocumentNumber, ExpectedDeliveryDate = w.ExpectedDeliveryDate, IsFundAvailable = w.IsFundAvailable, PRNNumber = w.PRNNumber, Total = w.Total, RequestDate = w.CreatedOn, RequestBy = w.RequestBy, StatusName = Convert.ToString((ApprovalStatus)d.ApprovalStatusId), }).ToList(), PaymentTerms = paymentTerms.Where(s => s.BidAndTenderId == d.BidAndTenderId).Select(a => new PaymentTermsObj { BidAndTenderId = a.BidAndTenderId, Comment = a.Comment, Completion = a.Completion, Amount = a.Amount, NetAmount = a.NetAmount, Payment = a.Payment, PaymentStatus = a.PaymentStatus, PaymentStatusName = Convert.ToString((PaymentStatus)a.PaymentStatus), PaymentTermId = a.PaymentTermId, Phase = a.Phase, ProjectStatusDescription = a.ProjectStatusDescription, Status = a.Status, ProposedBy = a.ProposedBy, StatusName = Convert.ToString((JobProgressStatus)a.Status), }).ToList(), }).ToList() ?? new List <BidAndTenderObj>(); response.Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = staffBidawaiting.Count() > 0 ? null : "Search Complete! No Record found" } }; return(response); } catch (SqlException ex) { throw ex; } }
public async Task <PurchAndPayaReportResp> Handle(PurchaseAndPayablesReportQuery request, CancellationToken cancellationToken) { var response = new PurchAndPayaReportResp { PurchAndsPayables = new List <PurchAndPayaReport>(), Staus = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage() } }; try { if (string.IsNullOrEmpty(request.LPONumber)) { response.Staus.Message.FriendlyMessage = "LPO Number Required to pull report"; response.Staus.IsSuccessful = false; return(response); } var user = await _serverRequest.UserDataAsync(); var comp = await _serverRequest.GetAllCompanyStructureAsync(); var responseList = new List <PurchAndPayaReport>(); var result = (from a in _dataContext.purch_plpo join b in _dataContext.purch_requisitionnote on a.PurchaseReqNoteId equals b.PurchaseReqNoteId join c in _dataContext.inv_invoice on a.PLPOId equals c.LPOId join e in _dataContext.cor_supplier on c.SupplierId equals e.SupplierId select new PurchAndPayaReport { LPONumber = a.LPONumber, Description = a.Description, RequestDate = a.RequestDate, SupplierId = e.SupplierId, SupplierName = e.Name, ExpectedDeleiveryDate = b.ExpectedDeliveryDate.Value, DeleiveryLocation = a.Address, AmountPayable = a.AmountPayable, AmountPaid = c.AmountPaid, OutStandingAmount = (c.Amount - c.AmountPaid), LPOId = a.PLPOId, DepartmentId = b.DepartmentId, SupplierLocation = e.Address, Department = b.DepartmentId, RequisitionDate = a.RequestDate }).ToList(); if (result.Count() > 0) { result = result.Where(r => r.LPONumber == request.LPONumber).ToList(); responseList.AddRange(result); foreach (var item in result) { item.DepartmentName = comp.companyStructures.FirstOrDefault(r => r.CompanyStructureId == item.DepartmentId)?.Name; } if (!string.IsNullOrEmpty(request.ItemDescription)) { var descs = result.Where(r => r.Description == request.ItemDescription).ToList(); if (descs.Count() > 0) { responseList.AddRange(descs); } } if (string.IsNullOrEmpty(request.SupplierLocation)) { var loca = result.Where(r => r.SupplierLocation == request.SupplierLocation).ToList(); if (loca.Count() > 0) { responseList.AddRange(loca); } } if (string.IsNullOrEmpty(request.DeleiveryLocation)) { var deLoc = result.Where(r => r.DeleiveryLocation == request.DeleiveryLocation).ToList(); if (deLoc.Count() > 0) { responseList.AddRange(deLoc); } } if (request.RequisitionDate != null) { var reqDate = result.Where(r => r.RequisitionDate == request.RequisitionDate).ToList(); if (reqDate.Count() > 0) { responseList.AddRange(reqDate); } } if (request.Department > 0) { var dept = result.Where(r => r.Department == request.Department).ToList(); if (dept.Count() > 0) { responseList.AddRange(dept); } } if (request.AmountPayable != 0) { var amtPaya = result.Where(r => r.AmountPayable == request.AmountPayable).ToList(); if (amtPaya.Count() > 0) { responseList.AddRange(amtPaya); } } if (request.ExpectedDeleiveryDate != null) { var exp = result.Where(r => r.ExpectedDeleiveryDate == request.ExpectedDeleiveryDate).ToList(); if (exp.Count() > 0) { responseList.AddRange(exp); } } if (request.AmountPaid != 0) { var paid = result.Where(r => r.AmountPaid == request.AmountPaid).ToList(); if (paid.Count() > 0) { responseList.AddRange(paid); } } if (request.OutStandingAmount != 0) { //foreach (var item in result) //{ // item.OutStandingAmount = item.AmountPayable - item.AmountPaid; //} //responseList.AddRange(result.Where(r => r.AmountPaid == request.AmountPaid).ToList()); } } //if(result.Count() > 0) // { // //foreach (var item in result) // //{ // // item.SubStrucure = comp.companyStructures.FirstOrDefault(r => r.CompanyStructureId == Convert.ToInt64(user.CompanyId))?.Name; // // item.Total = item.LPOReports.Select(r => r.GrossAmount).ToList().Sum(); // // item.NumberOfLPO = item.LPOReports.Select(r => r.GrossAmount).ToList().Count(); // // foreach (var sub in item.LPOReports) // // { // // sub.DepartmentName = comp.companyStructures.FirstOrDefault(r => r.CompanyStructureId == sub.DepartmentId)?.Name; // // } // //} // } response.PurchAndsPayables = responseList; return(response); } catch (Exception ex) { throw ex; } }
public async Task <LPORespObj> Handle(GetLPOAwaitingApprovalQuery request, CancellationToken cancellationToken) { try { var result = await _serverRequest.GetAnApproverItemsFromIdentityServer(); if (!result.IsSuccessStatusCode) { var data1 = await result.Content.ReadAsStringAsync(); var res1 = JsonConvert.DeserializeObject <WorkflowTaskRespObj>(data1); return(new LPORespObj { Status = new APIResponseStatus { IsSuccessful = false, Message = new APIResponseMessage { FriendlyMessage = $"{result.ReasonPhrase} {result.StatusCode}" } } }); } var data = await result.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject <WorkflowTaskRespObj>(data); if (res == null) { return(new LPORespObj { Status = res.Status }); } if (res.workflowTasks.Count() < 1) { return(new LPORespObj { Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = "No Pending Approval" } } }); } CompanyStructureRespObj _Department = new CompanyStructureRespObj(); _Department = await _serverRequest.GetAllCompanyStructureAsync(); var paymentTerms = await _repo.GetPaymenttermsAsync(); var bids = await _repo.GetAllBidAndTender(); var staffLPOawaiting = await _repo.GetLPOAwaitingApprovalAsync(res.workflowTasks.Select(x => x.TargetId).ToList(), res.workflowTasks.Select(s => s.WorkflowToken).ToList()); var lpos = await _repo.GetAllPurchaseRequisitionNoteAsync(); return(new LPORespObj { LPOs = staffLPOawaiting?.Select(d => new LPOObj { AmountPayable = d.AmountPayable, ApprovalStatusId = d.ApprovalStatusId, BidAndTenderId = d.BidAndTenderId, DeliveryDate = d.DeliveryDate, Description = d.Description, GrossAmount = d.GrossAmount, JobStatus = d.JobStatus, JobStatusName = Convert.ToString((JobProgressStatus)d.JobStatus), LPONumber = d.LPONumber, Name = d.Name, PLPOId = d.PLPOId, RequestDate = d.RequestDate, SupplierAddress = d.SupplierAddress, SupplierId = d.SupplierIds, SupplierNumber = d.SupplierNumber, Tax = d.Tax, Total = d.Total, WorkflowToken = d.WorkflowToken, WinnerSupplierId = d.WinnerSupplierId, BidAndTender = bids.Where(w => w.BidAndTenderId == d.BidAndTenderId).Select(s => new BidAndTenderObj { BidAndTenderId = s.BidAndTenderId, AmountApproved = s.AmountApproved, ApprovalStatusId = s.ApprovalStatusId, DateSubmitted = s.DateSubmitted, DecisionResult = s.DecisionResult, DecisionReultName = Convert.ToString((DecisionResult)s.DecisionResult), DescriptionOfRequest = s.DescriptionOfRequest, ExpectedDeliveryDate = s.ExpectedDeliveryDate, Location = s.Location, LPOnumber = s.LPOnumber, PLPOId = s.PLPOId, PRNId = s.PLPOId, ProposedAmount = s.ProposedAmount.ToString(), Quantity = s.Quantity, RequestDate = s.RequestDate, RequestingDepartmentName = _Department.companyStructures.FirstOrDefault(e => e.CompanyStructureId == s.RequestingDepartment)?.Name, SupplierAddress = s.SupplierAddress, Suppliernumber = s.Suppliernumber, SupplierName = s.SupplierName, Total = s.Total, }).ToList(), RequisitionNotes = lpos.Where(w => w.PurchaseReqNoteId == d.PurchaseReqNoteId).Select(q => new RequisitionNoteObj { PurchaseReqNoteId = q.PurchaseReqNoteId, ApprovalStatusId = q.ApprovalStatusId, Comment = q.Comment, DeliveryLocation = q.DeliveryLocation, DepartmentId = q.DepartmentId, Description = q.Description, DocumentNumber = q.DocumentNumber, ExpectedDeliveryDate = q.ExpectedDeliveryDate, IsFundAvailable = q.IsFundAvailable, PRNNumber = q.PRNNumber, RequestBy = q.RequestBy, Total = q.Total, RequestDate = q.CreatedOn, }).ToList(), PaymentTerms = paymentTerms.Where(e => e.BidAndTenderId == d.BidAndTenderId).Select(p => new PaymentTermsObj { BidAndTenderId = p.BidAndTenderId, Comment = p.Comment, Completion = p.Completion, Amount = p.Amount, NetAmount = p.NetAmount, Payment = p.Payment, PaymentStatus = p.PaymentStatus, PaymentTermId = p.PaymentTermId, Phase = p.Phase, ProjectStatusDescription = p.ProjectStatusDescription, Status = p.Status, ProposedBy = p.ProposedBy, StatusName = Convert.ToString((JobProgressStatus)p.Status), PaymentStatusName = Convert.ToString((PaymentStatus)p.PaymentStatus), }).ToList(), }).ToList() ?? new List <LPOObj>(), Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = staffLPOawaiting.Count() > 0 ? null : "Search Complete! No Record found" } } }); } catch (SqlException ex) { throw ex; } }
public async Task <BidAndTenderRespObj> Handle(GetBidAndTenderQuery request, CancellationToken cancellationToken) { var response = new BidAndTenderRespObj { Status = new APIResponseStatus { Message = new APIResponseMessage() } }; var userid = _accessor.HttpContext.User?.FindFirst(a => a.Type == "userId")?.Value; var user = await _userManager.FindByIdAsync(userid); var otherBids = await _dataContext.cor_bid_and_tender.Where(a => a.SupplierId == 0 && a.ApprovalStatusId == (int)ApprovalStatus.Awaiting).ToListAsync(); var supDetail = await _dataContext.cor_supplier.FirstOrDefaultAsync(a => a.Email.Trim().ToLower() == user.Email.Trim().ToLower()); var result = await _repo.GetAllSupplierBidAndTender(user.Email); CompanyStructureRespObj _Department = new CompanyStructureRespObj(); var resp = new List <BidAndTenderObj>(); _Department = await _serverRequest.GetAllCompanyStructureAsync(); var domainList = new List <cor_bid_and_tender>(); domainList.AddRange(result); if (otherBids.Count() > 0) { var nonSupplierBids = otherBids.Where(q => !q.SelectedSuppliers.Split(',').Select(int.Parse).ToList().Contains(supDetail.SupplierId)).ToList(); if (nonSupplierBids.Count() > 0) { foreach (var er in nonSupplierBids) { er.SupplierName = supDetail.Name; er.Suppliernumber = supDetail.SupplierNumber; er.SupplierId = supDetail.SupplierId; } } domainList.AddRange(nonSupplierBids); } response.BidAndTenders = domainList?.OrderByDescending(a => a.BidAndTenderId).Where(r => r.ApprovalStatusId == (int)ApprovalStatus.Awaiting) .Select(d => new BidAndTenderObj { BidAndTenderId = d.BidAndTenderId, AmountApproved = d.AmountApproved, DateSubmitted = d.DateSubmitted, DecisionResult = d.DecisionResult, DescriptionOfRequest = d?.DescriptionOfRequest, Location = d?.Location, LPOnumber = d?.LPOnumber, ExpectedDeliveryDate = d.ExpectedDeliveryDate, RequestDate = d.RequestDate, RequestingDepartment = d.RequestingDepartment, SupplierName = d?.SupplierName, Suppliernumber = d?.Suppliernumber, Quantity = d.Quantity, Total = d.Total, ApprovalStatusId = d.ApprovalStatusId, SupplierId = d.SupplierId, WorkflowToken = d.WorkflowToken, Comment = d.Comment, SupplierAddress = d.SupplierAddress, RequestingDepartmentName = d.RequestingDepartment > 0? _Department.companyStructures.FirstOrDefault(e => e.CompanyStructureId == d.RequestingDepartment)?.Name : string.Empty, PLPOId = d.PLPOId, PRNId = d.PurchaseReqNoteId, }).ToList() ?? new List <BidAndTenderObj>(); if (response.BidAndTenders.Count() > 0) { var biddenITem = _dataContext.cor_bid_and_tender.Where(q => q.SupplierId == supDetail.SupplierId && response.BidAndTenders.Select(s => s.PLPOId).Contains(q.PLPOId) && !string.IsNullOrEmpty(q.SelectedSuppliers)).ToList(); if (biddenITem.Count() > 0) { var lrespn = response.BidAndTenders.Except(response.BidAndTenders.Where(a => biddenITem.Select(w => w.PLPOId).Contains(a.PLPOId)).ToList()); response.BidAndTenders = lrespn.ToList(); } } return(response); }
public async Task <RequisitionNoteRespObj> Handle(GetAllPRNAwaitingApprovalQuery request, CancellationToken cancellationToken) { try { var apiResponse = new RequisitionNoteRespObj { Status = new APIResponseStatus { IsSuccessful = false, Message = new APIResponseMessage() } }; var result = await _serverRequest.GetAnApproverItemsFromIdentityServer(); if (!result.IsSuccessStatusCode) { apiResponse.Status.Message.FriendlyMessage = $"{result.ReasonPhrase} {result.StatusCode}"; return(apiResponse); } var data = await result.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject <WorkflowTaskRespObj>(data); if (res == null) { apiResponse.Status = res.Status; return(apiResponse); } if (res.workflowTasks.Count() < 1) { apiResponse.Status.IsSuccessful = true; apiResponse.Status.Message.FriendlyMessage = "No Pending Approval"; return(apiResponse); } var _Department = await _serverRequest.GetAllCompanyStructureAsync(); var pendingTaskIds = res.workflowTasks.Select(x => x.TargetId).ToList(); var pendingTaskTokens = res.workflowTasks.Select(s => s.WorkflowToken).ToList(); var prn = await _repo.GetPRNAwaitingApprovalAsync(pendingTaskIds, pendingTaskTokens); apiResponse.RequisitionNotes = prn.Select(d => new RequisitionNoteObj { ApprovalStatusId = d.ApprovalStatusId, Comment = d.Comment, DeliveryLocation = d.DeliveryLocation, DepartmentId = d.DepartmentId, Description = d.Description, DocumentNumber = d.DocumentNumber, ExpectedDeliveryDate = d.ExpectedDeliveryDate, IsFundAvailable = d.IsFundAvailable, PurchaseReqNoteId = d.PurchaseReqNoteId, RequestBy = d.RequestBy, StatusName = Convert.ToString((ApprovalStatus)d.ApprovalStatusId), Total = d.Total, RequestDate = d.CreatedOn, WorkflowToken = d.WorkflowToken, PRNNumber = d.PRNNumber, DepartmentName = _Department.companyStructures.FirstOrDefault(c => c.CompanyStructureId == d.DepartmentId)?.Name, DetailsCount = d.purch_prndetails.Count() }).ToList(); apiResponse.Status.IsSuccessful = true; apiResponse.Status.Message.FriendlyMessage = prn.Count() < 1 ? "No PRN awaiting approvals" : null; return(apiResponse); } catch (SqlException ex) { throw ex; } }