Exemplo n.º 1
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.º 2
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.º 3
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);
        }