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