public async Task <ApiResponse> Handle(StartProposalDragAndDropCommand 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}"); 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; ProjectProposalDetail proposaldata = new ProjectProposalDetail(); try { // --------------------code to get response credential from environment variables. string obj = await GCBucket.UploadOtherProposalDocuments(BucketName, folderWithProposalFile, request.file, request.FileName, request.ext); proposaldata = await _dbContext.ProjectProposalDetail.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId && x.IsDeleted == false); Console.WriteLine($"Final bucket response : {obj}"); if (obj != null) { if (proposaldata == null) { proposaldata = new ProjectProposalDetail(); proposaldata.FolderName = folderName; proposaldata.ProposalFileName = request.FileName; proposaldata.ProposalWebLink = obj; proposaldata.ProjectId = request.ProjectId; proposaldata.IsDeleted = false; proposaldata.ProposalExtType = ".docx"; proposaldata.CreatedById = request.CreatedById; proposaldata.CreatedDate = request.CreatedDate; proposaldata.ProposalStartDate = DateTime.UtcNow; await _dbContext.ProjectProposalDetail.AddAsync(proposaldata); await _dbContext.SaveChangesAsync(); } else { proposaldata.FolderName = folderName; proposaldata.ProposalFileName = request.FileName; proposaldata.ProposalWebLink = obj; proposaldata.ProjectId = request.ProjectId; proposaldata.IsDeleted = false; proposaldata.ProposalExtType = ".docx"; proposaldata.ModifiedDate = request.ModifiedDate; proposaldata.ModifiedById = request.ModifiedById; proposaldata.ProposalStartDate = 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.ProjectProposalDetail = proposaldata; 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(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); }
//upload files public static async Task <ProjectProposalDetail> uploadOtherProposaldoc(string folderName, IFormFile filedata, string fileName, GoogleCredentialModel googleCredential, string EmailId, string logginUserEmailId, string ext, JObject googleCredentialPathFile, string ProposalType) { ProjectProposalModel res = new ProjectProposalModel(); string exten = Path.GetExtension(fileName).ToLower(); ProjectProposalDetail model = new ProjectProposalDetail(); //there are different scopes, which you can find here https://cloud.google.com/storage/docs/authentication var scopes = new[] { @"https://www.googleapis.com/auth/cloud-platform" }; var cts = new CancellationTokenSource(); ClientSecrets secrets = new ClientSecrets(); secrets.ClientId = googleCredentialPathFile["installed"]["client_id"].ToString(); secrets.ClientSecret = googleCredentialPathFile["installed"]["client_secret"].ToString(); UserCredential credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( secrets, scopes, StaticResource.EmailId, CancellationToken.None); // Create the service. StorageService service = new StorageService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = StaticResource.ApplicationName, }); var bucketsQuery = service.Buckets.List(StaticResource.ProjectId); bucketsQuery.OauthToken = credential.Token.AccessToken; var buckets = bucketsQuery.Execute(); FileStream fileStream = null; try { ApiResponse response = new ApiResponse(); var newObject = new Google.Apis.Storage.v1.Data.Object() { Bucket = StaticResource.BucketName, Name = StaticResource.ProjectsFolderName + "/" + folderName + "/" + fileName }; var mimetype = GetMimeType(ext); var uploadRequest = new ObjectsResource.InsertMediaUpload(service, newObject, StaticResource.BucketName, filedata.OpenReadStream(), mimetype); uploadRequest.OauthToken = credential.Token.AccessToken; var fileResponse = uploadRequest.Upload(); Console.WriteLine($"Other files response from bucket: {fileResponse}"); var bucketFolderWithFilePath = newObject.Bucket + "/" + newObject.Name; if (fileResponse.Status.ToString() == "Completed" && fileResponse.Exception == null) { if (ProposalType == "Proposal") { model.FolderName = folderName; model.ProposalFileName = fileName; model.ProposalWebLink = bucketFolderWithFilePath; model.IsDeleted = false; model.CreatedDate = DateTime.UtcNow; } if (ProposalType == "EOI") { model.FolderName = folderName; model.EDIFileName = fileName; model.EDIFileWebLink = bucketFolderWithFilePath; model.EDIFileExtType = ext; model.IsDeleted = false; model.ModifiedDate = DateTime.UtcNow; } else if (ProposalType == "BUDGET") { model.FolderName = folderName; model.IsDeleted = false; model.BudgetFileName = fileName; model.BudgetFileWebLink = bucketFolderWithFilePath; model.BudgetFileExtType = ext; model.ModifiedDate = DateTime.UtcNow; } else if (ProposalType == "CONCEPT") { model.FolderName = folderName; model.IsDeleted = false; model.ConceptFileName = fileName; model.ConceptFileWebLink = bucketFolderWithFilePath; model.ConceptFileExtType = ext; model.ModifiedDate = DateTime.UtcNow; } else if (ProposalType == "PRESENTATION") { model.FolderName = folderName; model.IsDeleted = false; model.PresentationFileName = fileName; model.PresentationFileWebLink = bucketFolderWithFilePath; model.PresentationExtType = ext; model.ModifiedDate = DateTime.UtcNow; } } else { throw new Exception(StaticResource.UnableToUploadFile); } ////code to delete the file //ObjectsResource.ListRequest request = service.Objects.List(googleCredential.BucketName); //request.Delimiter = folderName + "/"; ////request.Prefix = Delimiter; //var filePath = folderName + "/" + projectProposalfilename; //Google.Apis.Storage.v1.Data.Objects response1 = request.Execute(); //foreach (var data in response1.Items) //{ // if (data != null && data.Name == filePath) // { // //delete the file in containing folder****** // ObjectsResource.DeleteRequest deleteRequest = null; // deleteRequest = new ObjectsResource.DeleteRequest(service, googleCredential.BucketName, data.Name); // deleteRequest.OauthToken = credential.Token.AccessToken; // deleteRequest.Execute(); // } // else // { // } //} //if (response1.Prefixes != null) //{ // // return // var data = response; //} } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (fileStream != null) { fileStream.Dispose(); } } return(model); }
public static async Task <string> UploadDocument(string folderName, IFormFile filedata, string fileName, string ext, JObject googleCredentialPathFile1, GoogleCredentialModel googleCredential) { string exten = Path.GetExtension(fileName).ToLower(); string bucketFolderWithFilePath = string.Empty; Console.WriteLine("---------------------GCBUCKET ----------------code"); ProjectProposalDetail model = new ProjectProposalDetail(); var scopes = new[] { @"https://www.googleapis.com/auth/cloud-platform" }; var cts = new CancellationTokenSource(); StorageService service = new StorageService(); UserCredential credential; ClientSecrets secrets = new ClientSecrets(); secrets.ClientId = googleCredentialPathFile1["installed"]["client_id"].ToString(); secrets.ClientSecret = googleCredentialPathFile1["installed"]["client_secret"].ToString(); Console.WriteLine($"secrets"); //var service = new StorageService(); //UserCredential credential; //using (var stream = new FileStream(googleCredentialPathFile1, FileMode.Open, FileAccess.Read)) //{ credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( secrets, scopes, StaticResource.EmailId, CancellationToken.None); //} // Create the service. service = new StorageService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = StaticResource.ApplicationName, }); var bucketsQuery = service.Buckets.List(StaticResource.ProjectId); bucketsQuery.OauthToken = credential.Token.AccessToken; var buckets = bucketsQuery.Execute(); FileStream fileStream = null; try { ApiResponse response = new ApiResponse(); var newObject = new Google.Apis.Storage.v1.Data.Object() { Bucket = StaticResource.BucketName, Name = StaticResource.ProjectsFolderName + "/" + folderName + "/" + StaticResource.ProjectActivityFolderName + "/" + fileName }; var mimetype = GetMimeType(ext); var uploadRequest = new ObjectsResource.InsertMediaUpload(service, newObject, StaticResource.BucketName, filedata.OpenReadStream(), mimetype); var fileResponse = uploadRequest.Upload(); Console.WriteLine($"File upload on bucket status: {fileResponse.Status}"); if (fileResponse.Status.ToString() == "Completed" && fileResponse.Exception == null) { bucketFolderWithFilePath = newObject.Bucket + "/" + newObject.Name; } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (fileStream != null) { fileStream.Dispose(); } } if (!string.IsNullOrEmpty(bucketFolderWithFilePath)) { return(bucketFolderWithFilePath); } else { throw new Exception(StaticResource.UnableToUploadFile); } }
public static async Task <ProjectProposalDetail> AuthExplicit(string filefullPath, string projectProposalfilename, JObject googleCredentialpathFile, string folderName, GoogleCredentialModel googleCredential, long Projectid, string userid) { ProjectProposalModel res = new ProjectProposalModel(); ProjectProposalDetail model = new ProjectProposalDetail(); //there are different scopes, which you can find here https://cloud.google.com/storage/docs/authentication //var scopes = new[] { @"https://www.googleapis.com/auth/cloud-platform" }; var scopes = new[] { @"https://www.googleapis.com/auth/devstorage.full_control" }; var cts = new CancellationTokenSource(); StorageService service = new StorageService(); ClientSecrets secrets = new ClientSecrets(); secrets.ClientId = googleCredentialpathFile["installed"]["client_id"].ToString(); secrets.ClientSecret = googleCredentialpathFile["installed"]["client_secret"].ToString(); UserCredential credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( secrets, scopes, StaticResource.EmailId, CancellationToken.None); service = new StorageService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = StaticResource.ApplicationName, }); var bucketsQuery = service.Buckets.List(StaticResource.ProjectId); bucketsQuery.OauthToken = credential.Token.AccessToken; var buckets = bucketsQuery.Execute(); // create bucket first time //var newBucket = new Google.Apis.Storage.v1.Data.Bucket() //{ // Name = "clear-fusion" //}; //var newBucketQuery = service.Buckets.Insert(newBucket, projectId); // newBucketQuery.OauthToken = userCredential.Result.Token.AccessToken; //you probably want to wrap this into try..catch block // newBucketQuery.Execute(); //enter bucket name to which you want to upload file FileStream fileStream = null; try { ApiResponse response = new ApiResponse(); Console.WriteLine("reading file path"); var path = Directory.GetCurrentDirectory() + "/Documents/Proposal/Proposal.docx"; Console.WriteLine($"File local Path with environment variables : {path}"); path = path.Replace(@"\", "/"); Console.WriteLine($"convert File local Path in linux : {path}"); var newObject = new Google.Apis.Storage.v1.Data.Object() { Bucket = googleCredential.BucketName, Name = googleCredential.Projects + "/" + folderName + "/" + projectProposalfilename + ".docx", }; fileStream = new FileStream(path, FileMode.Open); var uploadRequest = new ObjectsResource.InsertMediaUpload(service, newObject, googleCredential.BucketName, fileStream, "application/vnd.google-apps.document"); uploadRequest.OauthToken = credential.Token.AccessToken; var fileResponse = uploadRequest.Upload(); Console.WriteLine($"File upload status: {fileResponse.Status}"); var bucketFolderWithFilePath = newObject.Bucket + "/" + newObject.Name; if (fileResponse.Status.ToString() == "Completed" && fileResponse.Exception == null) { model.FolderName = folderName; model.ProposalFileName = projectProposalfilename; model.ProposalWebLink = bucketFolderWithFilePath; model.ProjectId = Projectid; model.IsDeleted = false; model.CreatedById = userid; model.CreatedDate = DateTime.Now; model.ProposalExtType = ".docx"; } else { Console.WriteLine("not completed"); throw new Exception(StaticResource.UnableToUploadFile); } } catch (Exception ex) { Console.WriteLine("Exception occured"); Console.WriteLine(ex.Message); } finally { if (fileStream != null) { fileStream.Dispose(); } } return(model); }
//****************read credential using service account from directory 21/03/19 //public static async Task<ProjectProposalDetail> StartProposalByDirectory(string projectProposalfilename, string googleCredentialpathFile, string folderName, ViewModels.Models.Project.GoogleCredentialModel googleCredential, long Projectid, string userid) //{ // FileStream fileStream = null; // ProjectProposalDetail model = new ProjectProposalDetail(); // try // { // ProjectProposalModel res = new ProjectProposalModel(); // //var scopes = new[] { @"https://www.googleapis.com/auth/cloud-platform" }; // //var cts = new CancellationTokenSource(); // //StorageService service = new StorageService(); // //UserCredential credential; // //using (var stream = new FileStream(googleCredentialpathFile, FileMode.Open, FileAccess.Read)) // //{ // // credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( // // GoogleClientSecrets.Load(stream).Secrets, // // scopes, // // googleCredential.EmailId, CancellationToken.None); // //} // //// Create the service. // //service = new StorageService(new BaseClientService.Initializer() // //{ // // HttpClientInitializer = credential, // // ApplicationName = googleCredential.ApplicationName, // //}); // var clientSecrets = new ClientSecrets(); // clientSecrets.ClientId = "160690498129-pg9hh4gr2ucta6neiik97tv1sla1qkec.apps.googleusercontent.com"; // clientSecrets.ClientSecret = "W0Zn9o2KmJFRXDnCbmq9z5m6"; // //there are different scopes, which you can find here https://cloud.google.com/storage/docs/authentication // var scopes = new[] { @"https://www.googleapis.com/auth/devstorage.full_control" }; // var cts = new CancellationTokenSource(); // var userCredential = await GoogleWebAuthorizationBroker.AuthorizeAsync(clientSecrets, scopes, "*****@*****.**", cts.Token); // await userCredential.RefreshTokenAsync(cts.Token); // var service = new Google.Apis.Storage.v1.StorageService(); // Console.WriteLine($"---- credential service----: {service}"); // var bucketsQuery = service.Buckets.List(StaticResource.ProjectId); // bucketsQuery.OauthToken = userCredential.Token.AccessToken; // var buckets = bucketsQuery.Execute(); // var dir = Directory.GetCurrentDirectory(); // // var pathCombine = Path.Combine(dir, @"/Documents/Proposal/Proposal.docx"); // var pathCombine = Directory.GetCurrentDirectory() + @"/Documents/Proposal/Proposal.docx"; // pathCombine = pathCombine.Replace(@"\", "/"); // Console.WriteLine($"--------File local folder Path ----------: {pathCombine}"); // fileStream = new FileStream(pathCombine, FileMode.Open); // ApiResponse response = new ApiResponse(); // Console.WriteLine($"--------convert to linux window File local folder Path ----------: {fileStream}"); // var newObject = new Google.Apis.Storage.v1.Data.Object() // { // Bucket = googleCredential.BucketName, // Name = googleCredential.Projects + "/" + folderName + "/" + projectProposalfilename + "xyz" + ".docx", // }; // if (fileStream != null) // { // var uploadRequest = new ObjectsResource.InsertMediaUpload(service, newObject, googleCredential.BucketName, fileStream, "application/vnd.google-apps.document"); // uploadRequest.OauthToken = userCredential.Token.AccessToken; // var fileResponse = uploadRequest.Upload(); // Console.WriteLine($"File upload on bucket status: {fileResponse.Status}"); // var bucketFolderWithFilePath = newObject.Bucket + "/" + newObject.Name; // if (fileResponse.Status.ToString() == "Completed" && fileResponse.Exception == null) // { // model.FolderName = folderName; // model.ProposalFileName = projectProposalfilename; // model.ProposalWebLink = bucketFolderWithFilePath; // model.ProjectId = Projectid; // model.IsDeleted = false; // model.CreatedById = userid; // model.CreatedDate = DateTime.Now; // model.ProposalExtType = ".docx"; // } // } // else // { // throw new Exception(StaticResource.UnableToUploadFile); // } // } // catch (Exception ex) // { // Console.WriteLine(ex.Message); // } // finally // { // if (fileStream != null) // { // fileStream.Dispose(); // } // } // return model; //} //************************************read credential from directory using auth credentail and using env as well as directory 20/03/2019 public static async Task <ProjectProposalDetail> StartProposalByDirectory(string projectProposalfilename, string googleCredentialpathFile, string folderName, GoogleCredentialModel googleCredential, long Projectid, string userid) { FileStream fileStream = null; ProjectProposalDetail model = new ProjectProposalDetail(); try { ProjectProposalModel res = new ProjectProposalModel(); var scopes = new[] { @"https://www.googleapis.com/auth/cloud-platform" }; var cts = new CancellationTokenSource(); StorageService service = new StorageService(); UserCredential credential; using (var stream = new FileStream(googleCredentialpathFile, FileMode.Open, FileAccess.Read)) { credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, scopes, googleCredential.EmailId, CancellationToken.None); } // Create the service. service = new StorageService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = googleCredential.ApplicationName, }); Console.WriteLine($"---- credential service----: {service}"); var bucketsQuery = service.Buckets.List(StaticResource.ProjectId); bucketsQuery.OauthToken = credential.Token.AccessToken; var buckets = bucketsQuery.Execute(); //enter bucket name to which you want to upload file ApiResponse response = new ApiResponse(); var path = Directory.GetCurrentDirectory() + @"/Documents/Proposal/Proposal.docx"; Console.WriteLine($"--------File local folder Path ----------: {path}"); path = path.Replace(@"\", "/"); Console.WriteLine($"--------convert to linux window File local folder Path ----------: {path}"); var newObject = new Google.Apis.Storage.v1.Data.Object() { Bucket = googleCredential.BucketName, Name = googleCredential.Projects + "/" + folderName + "/" + projectProposalfilename + "xyz" + ".docx", }; fileStream = new FileStream(path, FileMode.Open); if (fileStream != null) { var uploadRequest = new ObjectsResource.InsertMediaUpload(service, newObject, googleCredential.BucketName, fileStream, "application/vnd.google-apps.document"); uploadRequest.OauthToken = credential.Token.AccessToken; var fileResponse = uploadRequest.Upload(); Console.WriteLine($"File upload on bucket status: {fileResponse.Status}"); var bucketFolderWithFilePath = newObject.Bucket + "/" + newObject.Name; if (fileResponse.Status.ToString() == "Completed" && fileResponse.Exception == null) { model.FolderName = folderName; model.ProposalFileName = projectProposalfilename; model.ProposalWebLink = bucketFolderWithFilePath; model.ProjectId = Projectid; model.IsDeleted = false; model.CreatedById = userid; model.CreatedDate = DateTime.Now; model.ProposalExtType = ".docx"; } } else { throw new Exception(StaticResource.UnableToUploadFile); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (fileStream != null) { fileStream.Dispose(); } } return(model); }
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); }
public async Task <ApiResponse> Handle(UploadEDIProposalFileCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { long projectId = request.ProjectId; var folderDetail = await _dbContext.ProjectProposalDetail.FirstOrDefaultAsync(x => x.ProjectId == projectId && x.IsDeleted == false); //Console.WriteLine("------Before other file Credential path Upload----------"); 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}"); GoogleServiceAccountDirectory = GoogleServiceAccountDirectory.Replace(@"\", "/"); Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", GoogleServiceAccountDirectory); } GoogleCredentialModel result = new GoogleCredentialModel { ApplicationName = StaticResource.ApplicationName, BucketName = StaticResource.BucketName, EmailId = StaticResource.EmailId, ProjectId = StaticResource.ProjectId, Projects = StaticResource.ProjectsFolderName, HR = StaticResource.HRFolderName, Accounting = StaticResource.AccountingFolderName, Store = StaticResource.StoreFolderName }; using (Stream objStream = new FileStream(Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"), FileMode.Open, FileAccess.Read)) { var proposaldata = await _dbContext.ProjectProposalDetail.FirstOrDefaultAsync(x => x.ProjectId == projectId && x.IsDeleted == false); string BucketName = Environment.GetEnvironmentVariable("GOOGLE_BUCKET_NAME"); string folderWithProposalFile = StaticResource.ProjectsFolderName + "/" + folderDetail.FolderName + "/" + request.fileName; //Console.WriteLine($"BucketName:{BucketName}"); string uploadedFileResponse = await GCBucket.UploadOtherProposalDocuments(BucketName, folderWithProposalFile, request.file, request.fileName, request.ext); if (uploadedFileResponse != null) { ProjectProposalDetail proposaldetails = await _dbContext.ProjectProposalDetail.FirstOrDefaultAsync(x => x.ProjectId == projectId && x.IsDeleted == false); if (proposaldetails == null) { proposaldetails = new ProjectProposalDetail(); } if (request.ProposalType == "Proposal") { proposaldetails.FolderName = folderDetail.FolderName; proposaldetails.ProposalFileName = request.fileName; proposaldetails.ProposalWebLink = uploadedFileResponse; proposaldetails.ProjectId = request.ProjectId; proposaldetails.CreatedDate = request.CreatedDate; proposaldetails.IsDeleted = false; proposaldetails.CreatedById = request.CreatedById; response.data.ProposalWebLink = uploadedFileResponse; response.data.ProposalWebLinkExtType = request.ext; } else { if (request.ProposalType == "EOI") { proposaldetails.FolderName = folderDetail.FolderName; proposaldetails.EDIFileName = request.fileName; proposaldetails.EDIFileWebLink = uploadedFileResponse; proposaldetails.EDIFileExtType = request.ext; // response folder path response.data.EDIWebLink = uploadedFileResponse; response.data.EDIWebLinkExtType = request.ext; } else if (request.ProposalType == "BUDGET") { proposaldetails.FolderName = folderDetail.FolderName; proposaldetails.BudgetFileName = request.fileName; proposaldetails.BudgetFileWebLink = uploadedFileResponse; proposaldetails.BudgetFileExtType = request.ext; // response folder path response.data.BudgetWebLink = uploadedFileResponse; response.data.BudgetWebLinkExtType = request.ext; } else if (request.ProposalType == "CONCEPT") { proposaldetails.FolderName = folderDetail.FolderName; proposaldetails.ConceptFileName = request.fileName; proposaldetails.ConceptFileWebLink = uploadedFileResponse; proposaldetails.ConceptFileExtType = request.ext; response.data.ConceptWebLink = uploadedFileResponse; response.data.ConceptWebLinkExtType = request.ext; } else if (request.ProposalType == "PRESENTATION") { proposaldetails.FolderName = folderDetail.FolderName; proposaldetails.PresentationFileName = request.fileName; proposaldetails.PresentationFileWebLink = uploadedFileResponse; proposaldetails.PresentationExtType = request.ext; // response folder path response.data.PresentationWebLink = uploadedFileResponse; response.data.PresentationWebLinkExtType = request.ext; } proposaldata.ProjectId = request.ProjectId; proposaldata.ModifiedDate = request.ModifiedDate; } if (proposaldetails.ProjectProposaldetailId == 0) { await _dbContext.ProjectProposalDetail.AddAsync(proposaldetails); await _dbContext.SaveChangesAsync(); } else { await _dbContext.SaveChangesAsync(); } response.StatusCode = StaticResource.successStatusCode; response.Message = "Success"; } else { throw new Exception("Failed to upload. Try again!"); } } } catch (Exception ex) { response.StatusCode = StaticResource.failStatusCode; response.Message = StaticResource.SomethingWrong + ex.Message; } return(response); }
public async Task <ApiResponse> Handle(AddApprovalDetailCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { ApproveProjectDetails obj = new ApproveProjectDetails(); obj = await _dbContext.ApproveProjectDetails.FirstOrDefaultAsync(x => x.ProjectId == request.ProjectId && x.IsDeleted == false); if (obj == null) { obj = new ApproveProjectDetails(); 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 = request.ModifiedDate; obj.ReviewCompletionDate = DateTime.UtcNow; await _dbContext.ApproveProjectDetails.AddAsync(obj); await _dbContext.SaveChangesAsync(); if (request.IsApproved == false) { ProjectProposalDetail details = await _dbContext.ProjectProposalDetail.Where(x => x.ProjectId == request.ProjectId && x.IsDeleted == false).FirstOrDefaultAsync(); if (details != null) { details.IsProposalAccept = request.IsApproved; details.ModifiedById = request.ModifiedById; details.IsDeleted = false; details.ModifiedDate = request.ModifiedDate; 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 = request.CreatedDate; obj.ReviewCompletionDate = DateTime.UtcNow; await _dbContext.SaveChangesAsync(); if (request.IsApproved == false) { var details = _dbContext.ProjectProposalDetail.Where(x => x.ProjectId == request.ProjectId && x.IsDeleted == false).FirstOrDefault(); if (details != null) { details.IsProposalAccept = request.IsApproved; details.ModifiedById = request.ModifiedById; details.IsDeleted = false; details.ModifiedDate = request.ModifiedDate; 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); }