Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        //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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        //****************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);
        }
Exemplo n.º 7
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);
        }
Exemplo n.º 8
0
        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);
        }