Beispiel #1
0
        public async Task <IActionResult> GetJustficationOfAward([FromQuery] int id)
        {
            var userId = GetUserId();

            var justificationofAward = await _justificationOfAwardRepository.GetByIdAsync(id);

            if (justificationofAward == null)
            {
                return(NotFound("Justfication Of Award does not exist"));
            }

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            // write logic to create TblAuthList object
            var newAudit = new TblAuthList
            {
                Title       = "Justfication Of Award",
                Url         = "/api/v1/justificationofaward/getjustification",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(justificationofAward));
        }
        public async Task <IActionResult> GetPurchaseOrder([FromQuery] int id)
        {
            var userId = GetUserId();

            var purchaseOrder = await _purchaseOrderRepository.GetByIdAsync(id);

            if (purchaseOrder == null)
            {
                return(NotFound("Purchase order not found"));
            }

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            var newAudit = new TblAuthList
            {
                Title       = "ContractAward",
                Url         = "/api/v1/contractaward/getpurchaseorder",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(purchaseOrder));
        }
Beispiel #3
0
        public async Task <IActionResult> DeleteSingleTenderJustification([FromQuery] int id)
        {
            var userId = GetUserId();

            var singleTenderJustification = await _singleTenderJustificationRepository.GetByIdAsync(id);

            if (singleTenderJustification == null)
            {
                return(NotFound("Single Tender Justification does not exist"));
            }

            _singleTenderJustificationRepository.Delete(singleTenderJustification);
            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            // write logic to create TblAuthList object
            var newAudit = new TblAuthList
            {
                Title       = "Justification of Award",
                Url         = "/api/v1/justificationofaward/deletesingletenderjustification",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            return(Ok(
                       new
            {
                message = "Single Tender Justification Deleted successfully"
            }));
        }
        public async Task <IActionResult> GetJCC([FromQuery] int id)
        {
            var userId = GetUserId();

            var jobCompletionCertificate = await _jobCompletionCertificateRepository.GetByIdAsync(id);

            if (jobCompletionCertificate == null)
            {
                return(NotFound("Form does not exist"));
            }

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            var newAudit = new TblAuthList
            {
                Title       = "MilestoneManagement",
                Url         = "/api/v1/milestonemanagement/getjcc",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(jobCompletionCertificate));
        }
Beispiel #5
0
        public async Task <IActionResult> GetAllJustificationOfAward()
        {
            var userId = GetUserId();

            var justificationofAwards = await _justificationOfAwardRepository.GetAllAsync();

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            // write logic to create TblAuthList object
            var newAudit = new TblAuthList
            {
                Title       = "Justification Of Award",
                Url         = "/api/v1/justificationofaward/getalljustificationofaward",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(justificationofAwards));
        }
        public async Task <IActionResult> GetAllPurchaseOrderDetails()
        {
            var userId = GetUserId();

            //var purchaseOrderList = new List<PurchaseOrderResponseObject>();

            var purchaseOrderList = await _purchaseOrderDetailsRepository.GetAllAsync();

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            var newAudit = new TblAuthList
            {
                Title       = "ContractAward",
                Url         = "/api/v1/contractaward/getallpurchaseorders",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(purchaseOrderList));
        }
Beispiel #7
0
        public async Task <IActionResult> SingleTenderJustificationForm()
        {
            var userId = GetUserId();

            var projects = await _projectsRepository.GetAllAsync();

            //var quotationMasters = _quotationMasterRepository.GetAll().ToList();
            var suppliers = _supplierIdentificationRepository.GetAllAsync();

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            var newAudit = new TblAuthList
            {
                Title       = "Single Tender Justification",
                Url         = "/api/v1/justificationofaward/singletenderjustificationform",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(new
            {
                Projects = projects,
                //QuotationMasters = quotationMasters,
                Suppliers = suppliers
            }));
        }
Beispiel #8
0
        public async Task <IActionResult> CreateJustificationOfAward([FromBody] JustificationOfAwardFormModel model)
        {
            var userId     = GetUserId();
            var endPointId = await GetEndPointId();

            if (ModelState.IsValid)
            {
                var justificationofAward = new TblJustificationofAward
                {
                    ProjectId           = model.ProjectId,
                    Rqnnumber           = model.Rqnnumber,
                    Rfqid               = model.Rfqid,
                    SupplierId          = model.SupplierId,
                    ScoreTechnicalEval  = model.ScoreTechnicalEval,
                    VendorBidPrice      = model.VendorBidPrice,
                    ScoreCommercialEval = model.ScoreCommercialEval,
                    EndUser             = model.EndUser,
                    EndUserDepartmentId = model.EndUserDepartmentId,
                    Date = model.Date,
                    JustificationofAward = model.JustificationofAward,
                    CreatedDate          = DateTime.Now,
                };

                await _justificationOfAwardRepository.CreateAsync(justificationofAward);


                // write logic to create TblAuthList object
                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                var newAudit = new TblAuthList
                {
                    Title       = "Justfication Of Award",
                    Url         = "/api/v1/justificationofaward/createjustificationofaward",
                    CreatedDate = DateTime.Now,
                    Status      = 0,
                    StaffId     = tblStaff.StaffId,
                    BatchId     = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                // login for email notification
                var emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 1);

                await _auditRepository.SaveChangesAsync();

                return(Ok(
                           new
                {
                    message = "Justification of Award created successfully",
                    EmailAddress = emailAddress
                }));
            }


            return(BadRequest(new
            {
                Errors = new[] { "Please input correct values" }
            }));
        }
        public async Task <IActionResult> DeletePurchaseOrderDetails([FromQuery] int id)
        {
            var userId = GetUserId();

            var purchaseOrderDetails = await _purchaseOrderDetailsRepository.GetByIdAsync(id);

            if (purchaseOrderDetails == null)
            {
                return(NotFound("Purchase Order Details does not exist"));
            }

            _purchaseOrderDetailsRepository.Delete(purchaseOrderDetails);
            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            // write logic to create TblAuthList object
            var newAudit = new TblAuthList
            {
                Title       = "ContractAward",
                Url         = "/api/v1/contractaward/deletepurchaseorderdetails",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(
                       new
            {
                message = "Purchase Order Details Deleted successfully"
            }));
        }
        public async Task <IActionResult> GetAllJCC()
        {
            //var formlist = new List<MilestoneManagementResponseObject>();
            var userId = GetUserId();

            var mastersList = await _jobCompletionCertificateRepository.GetAllAsync();

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            var newAudit = new TblAuthList
            {
                Title       = "MilestoneManagement",
                Url         = "/api/v1/milestonemanagement/getallforms",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(mastersList));
        }
        public async Task <IActionResult> DeleteJCC([FromQuery] int id)
        {
            var userId = GetUserId();

            var jobCompletionCertificate = await _jobCompletionCertificateRepository.GetByIdAsync(id);

            if (jobCompletionCertificate == null)
            {
                return(NotFound("Job completion certificate does not exist"));
            }

            _jobCompletionCertificateRepository.Delete(jobCompletionCertificate);
            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            // write logic to create TblAuthList object
            var newAudit = new TblAuthList
            {
                Title       = "MilestoneManagement",
                Url         = "/api/v1/invoice/deletejcc",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(
                       new
            {
                message = "Job completion certificate Deleted successfully"
            }));
        }
Beispiel #12
0
        public async Task <IActionResult> CreateSingleTenderJustification([FromForm] SingleTenderJustificationFormModel model)
        {
            var userId     = GetUserId();
            var endPointId = await GetEndPointId();

            if (ModelState.IsValid)
            {
                var singleTenderJustification = new TblSingleTenderJustification
                {
                    Address               = model.Address,
                    ContactName           = model.ContactName,
                    Email                 = model.Email,
                    TelephoneNumber       = model.TelephoneNumber,
                    ProjectId             = model.ProjectId,
                    ProposedContract      = model.ProposedContract,
                    ProposedContractValue = model.ProposedContractValue,
                    ProposedContractor    = model.ProposedContractor,
                    Justification         = model.Justification,
                    AdditionalInfo        = UploadFile(model.AdditionalInfo),
                    CreatedDate           = DateTime.Now,
                };

                await _singleTenderJustificationRepository.CreateAsync(singleTenderJustification);

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                // write logic to create TblAuthList object
                var newAudit = new TblAuthList
                {
                    Title       = "Single Tender Justification",
                    Url         = "/api/v1/justificationofaward/createsingletenderjustification",
                    CreatedDate = DateTime.Now,
                    Status      = 0,
                    StaffId     = tblStaff.StaffId,
                    BatchId     = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                // login for email notification
                var emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 1);

                await _auditRepository.SaveChangesAsync();

                return(Ok(
                           new
                {
                    message = "Single Tender Justification created successfully",
                    EmailAddress = emailAddress
                }));
            }

            return(BadRequest(new
            {
                Errors = new[] { "Please input correct values" }
            }));
        }
        public async Task <IActionResult> CreateJCC([FromBody] JobCompletionCertificateFormModel model)
        {
            var userId = GetUserId();

            if (ModelState.IsValid)
            {
                var form = new TblJobCompletionCertificate
                {
                    CertificateNumber  = model.CertificateNumber,
                    WorkOrder          = model.WorkOrder,
                    SupplierId         = model.SupplierId,
                    Address            = model.Address,
                    DeliveryAddress    = model.DeliveryAddress,
                    Telephone          = model.Telephone,
                    Email              = model.Email,
                    RecieptDate        = model.RecieptDate,
                    ServiceDescription = model.ServiceDescription,
                    CreatedDate        = DateTime.Now
                };

                await _jobCompletionCertificateRepository.CreateAsync(form);


                var endPointId = await GetEndPointId();

                var emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 1);

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                var newAudit = new TblAuthList
                {
                    Title       = "MilestoneManagement",
                    Url         = "/api/v1/milestonemanagement/createjcc",
                    CreatedDate = DateTime.Now,
                    Status      = 0,
                    StaffId     = tblStaff.StaffId,
                    BatchId     = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                await _auditRepository.SaveChangesAsync();

                return(Ok(
                           new
                {
                    message = "Job completion certificate created successfully",
                    EmailAddress = emailAddress
                }));
            }

            return(BadRequest(new
            {
                Errors = new[] { "Please input correct values" }
            }));
        }
        public async Task <IActionResult> UpdateJCC([FromBody] JobCompletionCertificateFormModel model, [FromQuery] int Jccid)
        {
            var userId = GetUserId();

            if (ModelState.IsValid)
            {
                var form = await _jobCompletionCertificateRepository.GetByIdAsync(Jccid);

                if (form == null)
                {
                    return(NotFound(new { message = "Certificate does not exist" }));
                }

                form.CertificateNumber  = model.CertificateNumber;
                form.WorkOrder          = model.WorkOrder;
                form.SupplierId         = model.SupplierId;
                form.Address            = model.Address;
                form.DeliveryAddress    = model.DeliveryAddress;
                form.Telephone          = model.Telephone;
                form.Email              = model.Email;
                form.RecieptDate        = model.RecieptDate;
                form.ServiceDescription = model.ServiceDescription;

                _jobCompletionCertificateRepository.Update(form);

                var endPointId = await GetEndPointId();

                var emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 1);

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                var newAudit = new TblAuthList
                {
                    Title       = "MilestoneManagement",
                    Url         = "/api/v1/milestonemanagement/updatejcc",
                    CreatedDate = DateTime.Now,
                    Status      = 0,
                    StaffId     = tblStaff.StaffId,
                    BatchId     = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                await _auditRepository.SaveChangesAsync();

                return(Ok(
                           new
                {
                    message = "Job completion certificate Updated successfully",
                    EmailAddress = emailAddress
                }));
            }

            return(BadRequest(model));
        }
        public async Task <IActionResult> PurchaseOrderFormUpdate([FromBody] PurchaseOrderFormModel model, [FromQuery] int PoId)
        {
            var userId = GetUserId();

            if (ModelState.IsValid)
            {
                var purchaseOrder = await _purchaseOrderRepository.GetByIdAsync(PoId);

                if (purchaseOrder == null)
                {
                    return(NotFound(new { message = "Purchase Order does not exist" }));
                }

                //purchaseOrder.PoId = model.PoId;
                purchaseOrder.SupplierId = model.SupplierID;
                purchaseOrder.IssuedDate = model.IssuedDate;
                purchaseOrder.QuoteRef   = model.QuoteRef;
                purchaseOrder.Potype     = model.POType;

                _purchaseOrderRepository.Update(purchaseOrder);

                var endPointId = await GetEndPointId();

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                var newAudit = new TblAuthList
                {
                    Title       = "ContractAward",
                    Url         = "/api/v1/contractaward/purchaseorderformupdate",
                    CreatedDate = DateTime.Now,
                    Status      = 0,
                    StaffId     = tblStaff.StaffId,
                    BatchId     = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                var emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 1);

                await _auditRepository.SaveChangesAsync();

                return(Ok(
                           new
                {
                    message = "purchase order updated successfully",
                    EmailAddress = emailAddress
                }));
            }

            return(BadRequest(new
            {
                Errors = new[] { "Please input correct values" }
            }));
        }
        public async Task <IActionResult> SubmitPurchaseOrderForm([FromBody] PurchaseOrderFormModel model)
        {
            var userId = GetUserId();

            if (ModelState.IsValid)
            {
                var newPurchaseOrder = new TblPurchaseOrder
                {
                    SupplierId  = model.SupplierID,
                    IssuedDate  = model.IssuedDate,
                    QuoteRef    = model.QuoteRef,
                    Potype      = model.POType,
                    Poamount    = model.Poamount,
                    QuoMasterId = model.QuoMasterId,
                    CreatedDate = DateTime.Now
                };

                await _purchaseOrderRepository.CreateAsync(newPurchaseOrder);

                var endPointId = await GetEndPointId();

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                var newAudit = new TblAuthList
                {
                    Title       = "ContractAward",
                    Url         = "/api/v1/contractaward/submitpurchaseorderform",
                    CreatedDate = DateTime.Now,
                    Status      = 0,
                    StaffId     = tblStaff.StaffId,
                    BatchId     = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                var emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 1);

                await _auditRepository.SaveChangesAsync();

                return(Ok(
                           new
                {
                    message = "Purchase order created successfully",
                    EmailAddress = emailAddress
                }));
            }

            return(BadRequest(new
            {
                Errors = new[] { "Please input correct values" }
            }));
        }
        public async Task <IActionResult> GetPurchaseOrderDetailsForm()
        {
            var userId = GetUserId();


            var PaymentTypes = new List <PaymentTypes>
            {
                new PaymentTypes {
                    Text = "Fixed", Value = 0
                },
                new PaymentTypes {
                    Text = "Dynamic", Value = 1
                }
            };

            var DeliveryTerms = new List <DeliveryTerms>
            {
                new DeliveryTerms {
                    Text = "Partial Delivery", Value = 0
                },
                new DeliveryTerms {
                    Text = "Complete Delivery", Value = 1
                },
                new DeliveryTerms {
                    Text = "Milestone", Value = 2
                }
            };

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            var newAudit = new TblAuthList
            {
                Title       = "ContractAward",
                Url         = "/api/v1/contractaward/getpurchaseorderform",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(new
            {
                Currencies = await _currencyRepository.GetAllAsync(),
                PurchaseOrderList = await _purchaseOrderRepository.GetAllAsync(),
                PaymentTypes,
                DeliveryTerms
            }));
        }
        public async Task <IActionResult> GetPurchaseOrderForm()
        {
            var userId = GetUserId();

            var PoTypes = new List <PoTypes>
            {
                new PoTypes {
                    Text = "Purchase Order above 7 million", Value = 0
                },
                new PoTypes {
                    Text = "Purchase Order below 7 million", Value = 1
                },
                new PoTypes {
                    Text = "Service Contract above 7 million", Value = 2
                },
            };

            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            var newAudit = new TblAuthList
            {
                Title       = "ContractAward",
                Url         = "/api/v1/contractaward/getpurchaseorderform",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(new
            {
                QuotationMasters = await _quotationMasterRepository.GetAllAsync(),
                PoTypes,
                // write logic to get appropriate suppliers
                Suppliers = await _supplierRepository.GetAllAsync()
            }));
        }
        public async Task <IActionResult> JCCForm()
        {
            var userId   = GetUserId();
            var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

            var newAudit = new TblAuthList
            {
                Title       = "MilestoneManagement",
                Url         = "/api/v1/milestonemanagement/jccform",
                CreatedDate = DateTime.Now,
                Status      = 0,
                StaffId     = tblStaff.StaffId,
                BatchId     = Guid.NewGuid().ToString()
            };

            await _auditRepository.CreateAsync(newAudit);

            await _auditRepository.SaveChangesAsync();

            return(Ok(new
            {
                Suppliers = await _supplierRepository.GetAllAsync()
            }));
        }
Beispiel #20
0
        public async Task <IActionResult> UpdateSingleTenderJustfication([FromForm] SingleTenderJustificationFormModel model, [FromQuery] int singleTenderJustficationId)
        {
            var userId     = GetUserId();
            var endPointId = await GetEndPointId();

            if (ModelState.IsValid)
            {
                var singleTenderJustification = await _singleTenderJustificationRepository.GetByIdAsync(singleTenderJustficationId);

                if (singleTenderJustification == null)
                {
                    return(NotFound(new { message = "Single Tender Justification does not exist" }));
                }


                // assign updated fields

                singleTenderJustification.Address               = model.Address;
                singleTenderJustification.ContactName           = model.ContactName;
                singleTenderJustification.Email                 = model.Email;
                singleTenderJustification.TelephoneNumber       = model.TelephoneNumber;
                singleTenderJustification.ProjectId             = model.ProjectId;
                singleTenderJustification.ProposedContract      = model.ProposedContract;
                singleTenderJustification.ProposedContractValue = model.ProposedContractValue;
                singleTenderJustification.ProposedContractor    = model.ProposedContractor;
                singleTenderJustification.Justification         = model.Justification;
                singleTenderJustification.AdditionalInfo        = UploadFile(model.AdditionalInfo);

                _singleTenderJustificationRepository.Update(singleTenderJustification);

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                // write logic to create TblAuthList object
                var newAudit = new TblAuthList
                {
                    Title       = "Single Tender Justfication",
                    Url         = "/api/v1/justficationofaward/updatesingletenderjustification",
                    CreatedDate = DateTime.Now,
                    Status      = 0,
                    StaffId     = tblStaff.StaffId,
                    BatchId     = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                // login for email notification
                var emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 1);

                await _auditRepository.SaveChangesAsync();

                return(Ok(
                           new
                {
                    message = "Single Tender Justification updated successfully",
                    EmailAddress = emailAddress
                }));
            }

            return(BadRequest(new
            {
                Errors = new[] { "Please input correct values" }
            }));
        }
        public async Task <IActionResult> CreateAuthorizerStatus([FromBody] AuthStatusModel model, string authorizerCode)
        {
            var userId     = GetUserId();
            var endPointId = await GetEndPointId();

            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid Parameters..."));
            }
            else
            {
                var emailAddress = await _emailAddressRepository.SendEmailAddress(model.BatchId);

                // if authorizerstatus was not selected
                if (model.Status == 0)
                {
                    return(BadRequest(new { message = "Status was not selected" }));
                }

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                // if authorizer Rejects
                if (model.Status == 3)
                {
                    var audit = new TblAuthList
                    {
                        Title       = model.Title,
                        Url         = model.Url,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        StaffId     = tblStaff.StaffId,
                        BatchId     = model.BatchId
                    };

                    var newAuthApprover = new TblAuthApprover
                    {
                        AuthId      = audit.AuthId,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        Reason      = model.Reason,
                        StaffId     = tblStaff.StaffId,
                    };

                    await _authApproverRepository.CreateAsync(newAuthApprover);
                }

                // if authorizer approves
                if (model.Status == 2)
                {
                    var codes = _codeGeneratorRepository.FindAsync(x => x.GeneratedCode == authorizerCode).Result.FirstOrDefault();

                    if (codes == null)
                    {
                        return(BadRequest(new { message = "Code is invalid" }));
                    }

                    if (codes != null)
                    {
                        codes.Status = 1;
                        _codeGeneratorRepository.Update(codes);

                        var audit = new TblAuthList
                        {
                            Title       = model.Title,
                            Url         = model.Url,
                            CreatedDate = DateTime.Now,
                            Status      = model.Status,
                            StaffId     = tblStaff.StaffId,
                            BatchId     = model.BatchId
                        };

                        var newAuthApprover = new TblAuthApprover
                        {
                            AuthId      = audit.AuthId,
                            CreatedDate = DateTime.Now,
                            Status      = model.Status,
                            Reason      = model.Reason,
                            StaffId     = tblStaff.StaffId,
                        };

                        await _authApproverRepository.CreateAsync(newAuthApprover);
                    }
                }

                // if authorizer reviews
                if (model.Status == 1)
                {
                    var audit = new TblAuthList
                    {
                        Title       = model.Title,
                        Url         = model.Url,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        StaffId     = tblStaff.StaffId,
                        BatchId     = model.BatchId
                    };

                    var newAuthApprover = new TblAuthApprover
                    {
                        AuthId      = audit.AuthId,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        Reason      = model.Reason,
                        StaffId     = tblStaff.StaffId,
                    };

                    await _authApproverRepository.CreateAsync(newAuthApprover);
                }

                await _authApproverRepository.SaveChangesAsync();

                return(Ok(new { message = "Authorizer status registered...", EmailAddress = emailAddress, StatusReason = model.Reason }));
            }
        }
        public async Task <IActionResult> CreateCheckerStatus([FromBody] AuthStatusModel model)
        {
            var userId     = GetUserId();
            var endPointId = await GetEndPointId();

            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid Parameters..."));
            }
            else
            {
                // email address to initiator
                var emailAddress = await _emailAddressRepository.SendEmailAddress(model.BatchId);

                // if checker status was not selected
                if (model.Status == 0)
                {
                    return(BadRequest(new { message = "Status was not selected" }));
                }

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                // if checker rejects
                if (model.Status == 3)
                {
                    var audit = new TblAuthList
                    {
                        Title       = model.Title,
                        Url         = model.Url,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        StaffId     = tblStaff.StaffId,
                        BatchId     = model.BatchId
                    };

                    await _auditRepository.CreateAsync(audit);

                    var newAuthChecker = new TblAuthChecker
                    {
                        AuthId      = audit.AuthId,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        Reason      = model.Reason,
                        StaffId     = tblStaff.StaffId,
                    };

                    await _authCheckerRepository.CreateAsync(newAuthChecker);
                }
                // if checker approves
                if (model.Status == 2)
                {
                    var audit = new TblAuthList
                    {
                        Title       = model.Title,
                        Url         = model.Url,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        StaffId     = tblStaff.StaffId,
                        BatchId     = model.BatchId
                    };

                    await _auditRepository.CreateAsync(audit);

                    var newAuthChecker = new TblAuthChecker
                    {
                        AuthId      = audit.AuthId,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        Reason      = model.Reason,
                        StaffId     = tblStaff.StaffId,
                    };

                    await _authCheckerRepository.CreateAsync(newAuthChecker);

                    emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 2);
                }
                // if checker reviews
                if (model.Status == 1)
                {
                    var audit = new TblAuthList
                    {
                        Title       = model.Title,
                        Url         = model.Url,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        StaffId     = tblStaff.StaffId,
                        BatchId     = model.BatchId
                    };

                    await _auditRepository.CreateAsync(audit);

                    var newAuthChecker = new TblAuthChecker
                    {
                        AuthId      = audit.AuthId,
                        CreatedDate = DateTime.Now,
                        Status      = model.Status,
                        Reason      = model.Reason,
                        StaffId     = tblStaff.StaffId,
                    };

                    await _authCheckerRepository.CreateAsync(newAuthChecker);

                    _auditRepository.Update(audit);
                }

                await _auditRepository.SaveChangesAsync();

                return(Ok(new { message = "Checker status registered...", EmailAddress = emailAddress, StatusReason = model.Reason }));
            }
        }
Beispiel #23
0
        public async Task <IActionResult> CreateDailySiteReport([FromForm] DailyReportFormDTO dailyReportForm)
        {
            try
            {
                var userId = GetUserId();

                if (!ModelState.IsValid)
                {
                    return(BadRequest(new ErrorResponse <Dictionary <string, string[]> >
                    {
                        success = false,
                        message = "Your site reporting creation request failed",
                        errors = ModelState.Error().FilterError()
                    }));
                }

                var workflowDef = await _tblWorkflowProcessDef.ExistsAsync(x => x.WfdefId == 12);

                if (!workflowDef)
                {
                    return(NotFound(new ErrorResponse <object>
                    {
                        success = false,
                        message = "Workflow defination ID is not found",
                        errors = new { }
                    }));
                }

                var dailyReportEntity = new TblSrdailyReportingTemp
                {
                    ProjectId              = dailyReportForm.ProjectId,
                    GeneralSummary         = dailyReportForm.GeneralSummary,
                    ConstructionActivities = dailyReportForm.ConstructionActivities,
                    DailyProgress          = dailyReportForm.DailyProgress,
                    FollowingDayPlan       = dailyReportForm.FollowingDayPlan,
                    ProgressAt             = dailyReportForm.ProgressAt,
                    ConstructionActual     = dailyReportForm.ConstructionActual,
                    Planned     = dailyReportForm.Planned,
                    CreatedDate = DateTime.Now,
                    CreatedBy   = userId,
                };

                var dailyReport = await _tblSrdailyReportingTemp.CreateAsync(dailyReportEntity);

                await _tblSrdailyReportingTemp.SaveChangesAsync();

                if (!dailyReport)
                {
                    return(BadRequest(new ErrorResponse <Dictionary <string, string[]> >
                    {
                        success = false,
                        message = "Your site reporting creation request failed",
                        errors = ModelState.Error()
                    }));
                }

                if (dailyReportForm.HSEReport != null && dailyReportForm.HSEReport.Count > 0)
                {
                    var hseReportList = new List <TblSrdailyReportHsetemp>();

                    foreach (var hseReport in dailyReportForm.HSEReport)
                    {
                        hseReportList.Add(new TblSrdailyReportHsetemp
                        {
                            DailyRepId        = dailyReportEntity.DailyRepId,
                            Title             = hseReport.Title,
                            DetailsStatistics = hseReport.DetailStatistics,
                            Remarks           = hseReport.Remarks,
                            CreatedDate       = DateTime.Now,
                            CreatedBy         = userId,
                        });
                    }
                    await _tblSrdailyReportHsetemp.AddRangeAsync(hseReportList);
                }

                if (dailyReportForm.DailyReportingProgressMeasurement != null && dailyReportForm.DailyReportingProgressMeasurement.Count > 0)
                {
                    var progressMeasurementList = new List <TblSrdailyReportProgressMeasurementTemp>();

                    foreach (var progressMeasurement in dailyReportForm.DailyReportingProgressMeasurement)
                    {
                        progressMeasurementList.Add(new TblSrdailyReportProgressMeasurementTemp
                        {
                            DailyRepId         = dailyReportEntity.DailyRepId,
                            Activity           = progressMeasurement.Activity,
                            CumProgressActual  = progressMeasurement.CumProgressActual,
                            CumPlannedProgress = progressMeasurement.CumPlannedProgress,
                            Remarks            = progressMeasurement.Remarks,
                            CreatedDate        = DateTime.Now,
                            CreatedBy          = userId
                        });
                    }

                    await _tblSrdailyReportProgressMeasurementTemp.AddRangeAsync(progressMeasurementList);
                }

                if (dailyReportForm.DailyReportingIssues != null && dailyReportForm.DailyReportingIssues.Count > 0)
                {
                    var issuesList = new List <TblSrdailyReportingIssuesTemp>();

                    foreach (var issue in dailyReportForm.DailyReportingIssues)
                    {
                        issuesList.Add(new TblSrdailyReportingIssuesTemp
                        {
                            DailyRepId      = dailyReportEntity.DailyRepId,
                            Challenges      = issue.Challenges,
                            Recommendations = issue.Recommendations,
                            CreatedDate     = DateTime.Now,
                            CreatedBy       = userId
                        });
                    }
                    await _tblSrdailyReportingIssuesTemp.AddRangeAsync(issuesList);
                }

                if (dailyReportForm.DailyReportingDelays != null && dailyReportForm.DailyReportingDelays.Count > 0)
                {
                    var delayList = new List <TblSrdailyReportingDelaysTemp>();

                    foreach (var delay in dailyReportForm.DailyReportingDelays)
                    {
                        delayList.Add(new TblSrdailyReportingDelaysTemp
                        {
                            DailyRepId         = dailyReportEntity.DailyRepId,
                            DescriptionofDelay = delay.DescriptionOfDelay,
                            TimeTaken          = delay.TimeTaken,
                            Cause       = delay.Cause,
                            Responsible = delay.Responsible,
                            CreatedDate = DateTime.Now,
                            CreatedBy   = userId
                        });
                    }

                    await _tblSrdailyReportingDelaysTemp.AddRangeAsync(delayList);
                }

                if (dailyReportForm.DailyReportingFileAttachments != null)
                {
                    var errors = HandleFileValidationDecision(dailyReportForm.DailyReportingFileAttachments);

                    if (errors.Count > 0)
                    {
                        return(BadRequest(new ErrorResponse <object>
                        {
                            success = false,
                            message = "Something went wrong with the uploaded files",
                            errors = errors
                        }));
                    }
                }

                var fileContentList = new List <byte[]>();
                var fileObjectList  = new List <FileObject>();
                var files           = string.Empty;
                var fileObjects     = string.Empty;
                if (dailyReportForm.DailyReportingFileAttachments != null)
                {
                    var attachments = dailyReportForm.DailyReportingFileAttachments;

                    PropertyInfo[] properties = typeof(DailyReportingFileAttachmentsDTO).GetProperties();
                    foreach (var property in properties)
                    {
                        var propValue = property.GetValue(attachments);
                        if (property.GetValue(attachments) != null)
                        {
                            var fileObj = await ProcessFileContents((IFormFileCollection)property.GetValue(attachments), dailyReportEntity.DailyRepId);

                            var serializedFileObj = JsonConvert.SerializeObject(fileObj);

                            var jobId = BackgroundJob.Enqueue(() => ProcessFileUpload(property.Name, serializedFileObj));
                        }
                    }
                }

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                var(checker, approver) = await _siteReportRepository.GetWorkflowApprovers(12);

                await _emailSender.SendEmailAsync(checker, "Daily Site Report tendered", "Log in to check the reports");

                await _emailSender.SendEmailAsync(approver, "Daily Site Report tendered", "Log in to check the reports");

                var newAudit = new TblAuthList
                {
                    Title   = "SiteReporting",
                    Url     = "api/v1/sitereporting/getallforms",
                    Status  = 0,
                    StaffId = tblStaff.StaffId,
                    BatchId = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                await _auditRepository.SaveChangesAsync();

                return(Ok(new SucessResponse <object>
                {
                    success = true,
                    message = "Site Report created successfully",
                    data = new { }
                }));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, Response <string> .InternalError(ex.Message)));
            }
        }
        public async Task <IActionResult> SubmitPurchaseOrderDetailsForm([FromBody] List <PurchaseOrderDetailsFormModel> models, [FromQuery] int PoId)
        {
            var userId = GetUserId();

            if (ModelState.IsValid)
            {
                var purchaseOrder = await _purchaseOrderRepository.GetByIdAsync(PoId);

                if (purchaseOrder == null)
                {
                    return(BadRequest(new { message = "Purchase order not found" }));
                }

                var previousPurchaseOrderDetails = await _purchaseOrderDetailsRepository.FindAsync(x => x.PoId == PoId);

                if (previousPurchaseOrderDetails.ToList().Count != 0)
                {
                    return(BadRequest(new { message = "Purchase Order details already set for this purchase order" }));
                }


                decimal totalAmount = 0;
                var     podList     = new List <TblPurchaseOrderDetails>();



                // Po low complexity
                if (purchaseOrder.Potype == 0)
                {
                    foreach (var model in models)
                    {
                        var newPurchaseOrderDetails = new TblPurchaseOrderDetails
                        {
                            PoId            = PoId,
                            Description     = model.Description,
                            Quantity        = model.Quantity,
                            Rate            = model.Rate,
                            Amount          = model.Quantity * model.NoOfDays * model.UniCost,
                            Total           = model.Total,
                            DeliveryTerms   = model.DeliveryTerms,
                            DeliveryAddress = model.DeliveryAddress,
                            Title           = model.Title,
                            Vat             = model.VAT,
                            CurrencyId      = model.CurrencyID,
                            SubTotal        = model.SubTotal,
                            UnitCost        = model.UniCost,
                            TotalCost       = model.TotalCost,
                            NoOfDays        = model.NoOfDays
                        };

                        totalAmount += newPurchaseOrderDetails.Amount.GetValueOrDefault();
                        podList.Add(newPurchaseOrderDetails);
                    }

                    if (totalAmount != purchaseOrder.Poamount)
                    {
                        return(BadRequest(new { message = "Total Purchase Order details amount must be equal to Total Purchase order amount" }));
                    }

                    foreach (var pod in podList)
                    {
                        await _purchaseOrderDetailsRepository.CreateAsync(pod);
                    }
                }
                // PO High Complexity
                if (purchaseOrder.Potype == 1)
                {
                    foreach (var model in models)
                    {
                        var newPurchaseOrderDetails = new TblPurchaseOrderDetails
                        {
                            PoId            = PoId,
                            Description     = model.Description,
                            Quantity        = model.Quantity,
                            Rate            = model.Rate,
                            Amount          = model.Quantity * model.NoOfDays * model.UniCost,
                            Total           = model.Total,
                            DeliveryTerms   = model.DeliveryTerms,
                            DeliveryAddress = model.DeliveryAddress,
                            Title           = model.Title,
                            Vat             = model.VAT,
                            CurrencyId      = model.CurrencyID,
                            SubTotal        = model.SubTotal,
                            UnitCost        = model.UniCost,
                            TotalCost       = model.TotalCost,
                            NoOfDays        = model.NoOfDays
                        };

                        totalAmount += newPurchaseOrderDetails.Amount.GetValueOrDefault();
                        podList.Add(newPurchaseOrderDetails);
                    }


                    foreach (var pod in podList)
                    {
                        await _purchaseOrderDetailsRepository.CreateAsync(pod);
                    }
                }

                // Service Contract
                if (purchaseOrder.Potype == 2)
                {
                    foreach (var model in models)
                    {
                        var newPurchaseOrderDetails = new TblPurchaseOrderDetails
                        {
                            PoId            = PoId,
                            Description     = model.Description,
                            Quantity        = model.Quantity,
                            Rate            = model.Rate,
                            Amount          = model.UniCost,
                            Total           = model.Total,
                            DeliveryTerms   = model.DeliveryTerms,
                            DeliveryAddress = model.DeliveryAddress,
                            Title           = model.Title,
                            Vat             = model.VAT,
                            CurrencyId      = model.CurrencyID,
                            SubTotal        = model.SubTotal,
                            UnitCost        = model.UniCost,
                            TotalCost       = model.TotalCost,
                            NoOfDays        = model.NoOfDays
                        };

                        totalAmount += newPurchaseOrderDetails.Amount.GetValueOrDefault();
                        podList.Add(newPurchaseOrderDetails);
                    }


                    foreach (var pod in podList)
                    {
                        await _purchaseOrderDetailsRepository.CreateAsync(pod);
                    }
                }

                var endPointId = await GetEndPointId();

                var tblStaff = await _staffRepository.FirstOrDefaultAsync(x => x.AspnetUserId == userId);

                var newAudit = new TblAuthList
                {
                    Title       = "ContractAward",
                    Url         = "/api/v1/contractaward/submitpurchaseorderdetailsform",
                    CreatedDate = DateTime.Now,
                    Status      = 0,
                    StaffId     = tblStaff.StaffId,
                    BatchId     = Guid.NewGuid().ToString()
                };

                await _auditRepository.CreateAsync(newAudit);

                var emailAddress = await _emailAddressRepository.SendEmailAddress(endPointId, 1);

                await _auditRepository.SaveChangesAsync();

                return(Ok(
                           new
                {
                    message = "Purchase order details added successfully",
                    EmailAddress = emailAddress
                }));
            }

            return(BadRequest(new
            {
                Errors = new[] { "Please input correct values" }
            }));
        }