public RoutesController(IIOServiceContext context, IHttpContextAccessor httpContextAccessor, IHttpClientFactory clientFactory, IGoogleSheetsService googleSheetsService, IVtexApiService vtexApiService, ISheetsCatalogImportRepository SheetsCatalogImportRepository) { this._context = context ?? throw new ArgumentNullException(nameof(context)); this._httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); this._clientFactory = clientFactory ?? throw new ArgumentNullException(nameof(clientFactory)); this._googleSheetsService = googleSheetsService ?? throw new ArgumentNullException(nameof(googleSheetsService)); this._vtexApiService = vtexApiService ?? throw new ArgumentNullException(nameof(vtexApiService)); this._sheetsCatalogImportRepository = SheetsCatalogImportRepository ?? throw new ArgumentNullException(nameof(SheetsCatalogImportRepository)); }
public Mutation(IGoogleSheetsService googleSheetsService, ISheetsCatalogImportRepository sheetsCatalogImportRepository, IVtexApiService vtexApiService) { Name = "Mutation"; Field <BooleanGraphType>( "revokeToken", arguments: new QueryArguments( new QueryArgument <StringGraphType> { Name = "accountName", Description = "Account Name" } ), resolve: context => { bool revoked = googleSheetsService.RevokeGoogleAuthorizationToken().Result; if (revoked) { string accountName = context.GetArgument <string>("accountName"); sheetsCatalogImportRepository.SaveFolderIds(null, accountName); } return(revoked); }); Field <StringGraphType>( "googleAuthorize", resolve: context => { return(googleSheetsService.GetAuthUrl()); }); Field <StringGraphType>( "createSheet", resolve: context => { var created = googleSheetsService.CreateSheet(); vtexApiService.SetBrandList(); return(created); }); Field <StringGraphType>( "processSheet", resolve: context => { return(vtexApiService.ProcessSheet()); }); Field <StringGraphType>( "clearSheet", resolve: context => { var cleared = vtexApiService.ClearSheet(); var catalogAndBrand = vtexApiService.SetBrandList(); return(!string.IsNullOrWhiteSpace(cleared.Result) && catalogAndBrand.Result); }); Field <StringGraphType>( "addImages", resolve: context => { return(vtexApiService.AddImagesToSheet()); }); Field <StringGraphType>( "exportProducts", arguments: new QueryArguments( new QueryArgument <StringGraphType> { Name = "exportQuery", Description = "Export Query" } ), resolve: context => { string query = context.GetArgument <string>("exportQuery"); return(vtexApiService.ExportToSheet(query)); }); }
public Query(IGoogleSheetsService googleSheetsService, ISheetsCatalogImportRepository sheetsCatalogImportRepository) { Name = "Query"; FieldAsync <BooleanGraphType>( "haveToken", resolve: async context => { Token token = await googleSheetsService.GetGoogleToken(); return(token != null && !string.IsNullOrEmpty(token.RefreshToken)); } ); /// query Reviews($searchTerm: String, $from: Int, $to: Int, $orderBy: String, $status: Boolean) FieldAsync <StringGraphType>( "getOwnerEmail", arguments: new QueryArguments( new QueryArgument <StringGraphType> { Name = "accountName", Description = "Account Name" } ), resolve: async context => { string email = string.Empty; string accountName = context.GetArgument <string>("accountName"); Token token = await googleSheetsService.GetGoogleToken(); if (token != null) { string productsFolderId = string.Empty; FolderIds folderIds = await sheetsCatalogImportRepository.LoadFolderIds(accountName); if (folderIds != null) { if (!string.IsNullOrEmpty(folderIds.FolderOwner)) { email = folderIds.FolderOwner; } else { productsFolderId = folderIds.ProductsFolderId; ListFilesResponse listFilesResponse = await googleSheetsService.ListSheetsInFolder(productsFolderId); if (listFilesResponse != null) { var owners = listFilesResponse.Files.Select(o => o.Owners.Distinct()).FirstOrDefault(); if (owners != null) { email = owners.Select(o => o.EmailAddress).FirstOrDefault(); } } } } } return(email); } ); FieldAsync <StringGraphType>( "sheetLink", resolve: async context => { return(await googleSheetsService.GetSheetLink()); } ); }