public async Task <ApiResponse> Handle(AddEditProjectproposalsCommand request, CancellationToken cancellationToken)
        {
            ApiResponse           response = new ApiResponse();
            ProjectProposalDetail details  = new ProjectProposalDetail();

            try
            {
                details = await _dbContext.ProjectProposalDetail.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId && x.IsDeleted == false);

                if (details == null)
                {
                    details = new ProjectProposalDetail
                    {
                        ProposalDueDate  = request.ProposalDueDate,
                        ProjectAssignTo  = request.UserId,
                        IsProposalAccept = request.IsProposalAccept,
                        ProjectId        = request.ProjectId.Value,
                        CurrencyId       = request.CurrencyId,
                        UserId           = request.UserId,
                        IsDeleted        = false,
                        CreatedById      = request.CreatedById,
                        CreatedDate      = DateTime.UtcNow
                    };
                    await _dbContext.ProjectProposalDetail.AddAsync(details);

                    await _dbContext.SaveChangesAsync();
                }
                else
                {
                    details.ProposalBudget   = request.ProposalBudget;
                    details.ProposalDueDate  = request.ProposalDueDate;
                    details.ProjectAssignTo  = request.UserId;
                    details.IsProposalAccept = request.IsProposalAccept;
                    details.ProjectId        = request.ProjectId.Value;
                    details.CurrencyId       = request.CurrencyId;
                    details.UserId           = request.UserId;
                    details.ModifiedById     = request.ModifiedById;
                    details.ModifiedDate     = DateTime.UtcNow;
                    await _dbContext.SaveChangesAsync();

                    // Note: check proposal is accepted then make false entry for isApproved
                    if (details.IsProposalAccept == true)
                    {
                        ApproveProjectDetails obj = await _dbContext.ApproveProjectDetails.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId &&
                                                                                                               x.IsDeleted == false);

                        if (obj != null)
                        {
                            obj.IsApproved = obj.IsApproved == false ? null : obj.IsApproved;
                            _dbContext.ApproveProjectDetails.Update(obj);
                            await _dbContext.SaveChangesAsync();
                        }
                    }
                }
                response.data.ProjectProposalDetail = details;
                response.StatusCode = StaticResource.successStatusCode;
                response.Message    = "Success";
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
            }
            return(response);
        }
Beispiel #2
0
        public async Task <ApiResponse> Handle(AddApprovalProjectDetailCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();


            try
            {
                if (!string.IsNullOrEmpty(request.UploadedFile))
                {
                    request.UploadedFile = request.UploadedFile.Substring(request.UploadedFile.IndexOf(',') + 1);
                }
                ApproveProjectDetails obj = new ApproveProjectDetails();

                obj = await _dbContext.ApproveProjectDetails.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId && x.IsDeleted == false);

                if (obj == null)
                {
                    obj = new ApproveProjectDetails
                    {
                        ProjectId            = request.ProjectId,
                        CommentText          = request.CommentText,
                        FileName             = request.FileName,
                        FilePath             = request.FilePath,
                        IsApproved           = request.IsApproved,
                        IsDeleted            = false,
                        CreatedById          = request.CreatedById,
                        CreatedDate          = DateTime.UtcNow,
                        ReviewCompletionDate = DateTime.UtcNow
                    };
                    await _dbContext.ApproveProjectDetails.AddAsync(obj);

                    await _dbContext.SaveChangesAsync();

                    if (request.IsApproved == false)
                    {
                        var details = _dbContext.ProjectProposalDetail.FirstOrDefault(x => x.ProjectId == request.ProjectId && x.IsDeleted == false);
                        if (details != null)
                        {
                            details.IsProposalAccept = request.IsApproved;
                            details.ModifiedById     = request.ModifiedById;
                            details.IsDeleted        = false;
                            details.ModifiedDate     = DateTime.UtcNow;
                            await _dbContext.SaveChangesAsync();
                        }
                    }
                }
                else
                {
                    obj.ProjectId            = request.ProjectId;
                    obj.CommentText          = request.CommentText;
                    obj.FileName             = request.FileName;
                    obj.FilePath             = request.FilePath;
                    obj.IsApproved           = request.IsApproved;
                    obj.IsDeleted            = false;
                    obj.CreatedById          = request.CreatedById;
                    obj.CreatedDate          = DateTime.UtcNow;
                    obj.ReviewCompletionDate = DateTime.UtcNow;
                    await _dbContext.SaveChangesAsync();

                    if (request.IsApproved == false)
                    {
                        var details = _dbContext.ProjectProposalDetail.FirstOrDefault(x => x.ProjectId == request.ProjectId && x.IsDeleted == false);
                        if (details != null)
                        {
                            details.IsProposalAccept = request.IsApproved;
                            details.ModifiedById     = request.ModifiedById;
                            details.IsDeleted        = false;
                            details.ModifiedDate     = DateTime.UtcNow;
                            await _dbContext.SaveChangesAsync();
                        }
                    }
                }
                response.StatusCode = StaticResource.successStatusCode;
                response.Message    = "Success";
                response.data.ApproveProjectDetails = obj;
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
            }
            return(response);
        }
        public async Task <ApiResponse> Handle(UploadReviewDragAndDropCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();

            try
            {
                ProjectDetail projectDetail = await _dbContext.ProjectDetail.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId && x.IsDeleted == false);

                if (projectDetail == null)
                {
                    throw new Exception("Project Id not found");
                }
                string folderName = projectDetail.ProjectCode;
                //code to read credential from environment variables
                //Console.WriteLine("---------- Before Credential create path----------");
                string googleApplicationCredentail = Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS");
                //Console.WriteLine($"*******************googleApplicationCredentail are:{googleApplicationCredentail}");
                if (googleApplicationCredentail == null)
                {
                    string GoogleServiceAccountDirectory = Path.Combine(Directory.GetCurrentDirectory(), "GoogleCredentials/" + "credentials.json");
                    //Console.WriteLine($"*********GoogleServiceAccountDirectory :{GoogleServiceAccountDirectory}");
                    Console.WriteLine($"------GoogleServiceAccountDirectory cred null-----");
                    GoogleServiceAccountDirectory = GoogleServiceAccountDirectory.Replace(@"\", "/");
                    Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", GoogleServiceAccountDirectory);
                }

                using (Stream objStream = new FileStream(Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"), FileMode.Open, FileAccess.Read))
                {
                    //Console.WriteLine("--------- Environment Credential Read successfully----- ----------");

                    string BucketName = Environment.GetEnvironmentVariable("GOOGLE_BUCKET_NAME");
                    //Console.WriteLine($"BucketName:{BucketName}");
                    //Console.WriteLine("--------- check For upload----- ----------");
                    string folderWithProposalFile = StaticResource.ProjectsFolderName + "/" + folderName + "/" + request.FileName;

                    ApproveProjectDetails objRes = new ApproveProjectDetails();

                    try
                    {
                        // --------------------code to get response credential from environment variables.
                        string obj = await GCBucket.UploadOtherProposalDocuments(BucketName, folderWithProposalFile, request.file, request.FileName, request.ext);

                        objRes = await _dbContext.ApproveProjectDetails.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId && x.IsDeleted == false);

                        Console.WriteLine($"Final bucket response : {obj}");

                        if (obj != null)
                        {
                            if (objRes == null)
                            {
                                objRes = new ApproveProjectDetails
                                {
                                    ProjectId    = request.ProjectId,
                                    FileName     = request.FileName,
                                    FilePath     = obj,
                                    CommentText  = request.CommentText,
                                    UploadedFile = null,
                                    IsDeleted    = false,
                                    CreatedById  = request.CreatedById,
                                    IsApproved   = request.IsApproved,
                                    CreatedDate  = request.CreatedDate,
                                    //Review completion date for proposal report when proposal is completed as isapproved is true
                                    ReviewCompletionDate = DateTime.UtcNow
                                };
                                await _dbContext.ApproveProjectDetails.AddAsync(objRes);

                                await _dbContext.SaveChangesAsync();
                            }
                            else
                            {
                                objRes.ProjectId    = request.ProjectId;
                                objRes.FileName     = request.FileName;
                                objRes.CommentText  = request.CommentText;
                                objRes.FilePath     = obj;
                                objRes.UploadedFile = null;
                                objRes.IsDeleted    = false;
                                objRes.ModifiedDate = request.ModifiedDate;
                                objRes.ModifiedById = request.ModifiedById;
                                objRes.IsApproved   = request.IsApproved;
                                //Review completion date for proposal report when proposal is completed as isapproved is true
                                objRes.ReviewCompletionDate = DateTime.UtcNow;
                                await _dbContext.SaveChangesAsync();
                            }
                        }
                        else
                        {
                            throw new Exception("Failed to upload. Try again!");
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Upload using Environment variable failed");
                        Console.WriteLine($"--------------Using environment variable exception--: {ex}");
                    }

                    response.data.ApproveProjectDetails = objRes;
                    response.StatusCode = StaticResource.successStatusCode;
                    response.Message    = "Success";
                }
            }

            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
            }
            return(response);
        }
Beispiel #4
0
        public async Task <ApiResponse> Handle(GetProjectproposalsByIdQuery request, CancellationToken cancellationToken)
        {
            ApiResponse          response = new ApiResponse();
            ProjectProposalModel obj      = new ProjectProposalModel();

            try
            {
                ProjectProposalDetail detail = await _dbContext.ProjectProposalDetail.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId &&
                                                                                                          x.IsDeleted == false);

                ApproveProjectDetails Projectdetail = await _dbContext.ApproveProjectDetails.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId &&
                                                                                                                 x.IsDeleted == false);

                if (detail != null)
                {
                    obj.ProjectProposaldetailId = detail.ProjectProposaldetailId;
                    obj.FolderName              = detail.FolderName;
                    obj.FolderId                = detail.FolderId;
                    obj.ProposalFileName        = detail.ProposalFileName;
                    obj.ProjectId               = detail.ProjectId;
                    obj.ProposalFileId          = detail.ProposalFileId;
                    obj.EDIFileName             = detail.EDIFileName;
                    obj.EdiFileId               = detail.EdiFileId;
                    obj.BudgetFileName          = detail.BudgetFileName;
                    obj.BudgetFileId            = detail.BudgetFileId;
                    obj.ConceptFileName         = detail.ConceptFileName;
                    obj.ConceptFileId           = detail.ConceptFileId;
                    obj.PresentationFileName    = detail.PresentationFileName;
                    obj.ProposalWebLink         = detail.ProposalWebLink;
                    obj.EDIFileWebLink          = detail.EDIFileWebLink;
                    obj.BudgetFileWebLink       = detail.BudgetFileWebLink;
                    obj.ConceptFileWebLink      = detail.ConceptFileWebLink;
                    obj.PresentationFileWebLink = detail.PresentationFileWebLink;
                    obj.ProposalExtType         = detail.ProposalExtType;
                    obj.EDIFileExtType          = detail.EDIFileExtType;
                    obj.BudgetFileExtType       = detail.BudgetFileExtType;
                    obj.ConceptFileExtType      = detail.ConceptFileExtType;
                    obj.PresentationExtType     = detail.PresentationExtType;
                    obj.ProposalStartDate       = detail.ProposalStartDate;
                    obj.ProposalBudget          = detail.ProposalBudget;
                    obj.ProposalDueDate         = detail.ProposalDueDate;
                    obj.ProjectAssignTo         = detail.ProjectAssignTo;
                    obj.IsProposalAccept        = detail.IsProposalAccept;
                    obj.CurrencyId              = detail.CurrencyId;
                    obj.UserId     = detail.UserId;
                    obj.IsApproved = Projectdetail?.IsApproved;
                    response.data.ProjectProposalModel = obj;
                    response.StatusCode = StaticResource.successStatusCode;
                    response.Message    = "Success";
                }
                else
                {
                    response.StatusCode = StaticResource.failStatusCode;
                    response.Message    = StaticResource.NoDataFound;
                }
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
            }
            return(response);
        }