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);
            }
Exemplo n.º 2
0
        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"
                    }
                }
            });
        }
Exemplo n.º 3
0
        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 <CompanyStructureRespObj> GetAllCompanyStructureAsync()
        {
            try
            {
                var gosGatewayClient = _httpClientFactory.CreateClient("GOSDEFAULTGATEWAY");

                var response = new CompanyStructureRespObj {
                    Status = new APIResponseStatus {
                        IsSuccessful = true, Message = new APIResponseMessage()
                    }
                };

                CompanyStructureRespObj resultObj = new CompanyStructureRespObj();

                var result = await gosGatewayClient.GetAsync(ApiRoutes.IdentitySeverRequests.COMPANY);

                var resultString = await result.Content.ReadAsStringAsync();

                resultObj = JsonConvert.DeserializeObject <CompanyStructureRespObj>(resultString);
                if (!result.IsSuccessStatusCode)
                {
                    response.Status.IsSuccessful            = false;
                    response.Status.Message.FriendlyMessage = $"{result.ReasonPhrase}  {(int)result.StatusCode}  {result.Content}";
                    throw new Exception($"{response}");
                }

                if (!resultObj.Status.IsSuccessful)
                {
                    response.Status = resultObj.Status;
                    return(response);
                }
                response.companyStructures = resultObj.companyStructures;
                return(response);
            }
            catch (Exception ex)
            {
                #region Log error
                var errorCode = ErrorID.Generate(4);
                _logger.Error($"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}");
                throw ex;
                #endregion
            }
        }
            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"
                    }
                }
            });
        }
Exemplo n.º 7
0
        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 <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;
            }
        }
Exemplo n.º 9
0
        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);
        }