diff --git a/VCart.Domain/Entities/PersonUser.cs b/VCart.Domain/Entities/PersonUser.cs index a4dabfd..8eb216b 100644 --- a/VCart.Domain/Entities/PersonUser.cs +++ b/VCart.Domain/Entities/PersonUser.cs @@ -16,6 +16,8 @@ namespace VCart.Domain.Entities public string LastName => Name.LastName; public Email Email { get; private set; } public DateChanged DateChanged { get; private set; } - + public bool IsCompleted { get; private set; } + public int CountryId { get; private set; } + public int BusinessAreaId { get; private set; } } } diff --git a/VCart.Domain/ValueObjects/DateChanged.cs b/VCart.Domain/ValueObjects/DateChanged.cs index ee7efba..a3ef0e2 100644 --- a/VCart.Domain/ValueObjects/DateChanged.cs +++ b/VCart.Domain/ValueObjects/DateChanged.cs @@ -1,5 +1,6 @@  using BaseDomain; +using System.Globalization; namespace VCart.Domain { @@ -15,6 +16,11 @@ namespace VCart.Domain this.Value = dateTime; } + public DateChanged(string dateTime) + { + this.Value = Convert.ToDateTime(dateTime, new CultureInfo("pt-BR")); + } + public DateTime? Value { get; private set; } public override bool GetValidationExpression() diff --git a/VCart.Infra/Class1.cs b/VCart.Infra/Class1.cs deleted file mode 100644 index 81763e8..0000000 --- a/VCart.Infra/Class1.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace VCart.Infra -{ - public class Class1 - { - - } -} diff --git a/VCart.Infra/MongoDB/MongoDBContext.cs b/VCart.Infra/MongoDB/MongoDBContext.cs new file mode 100644 index 0000000..1a88991 --- /dev/null +++ b/VCart.Infra/MongoDB/MongoDBContext.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MongoDB.Driver; + +namespace VCart.Infra.MongoDB +{ + public class MongoDbContext + { + private readonly IMongoDatabase _database; + + public MongoDbContext(string connectionString, string databaseName) + { + var client = new MongoClient(connectionString); + _database = client.GetDatabase(databaseName); + } + + public IMongoCollection Users => _database.GetCollection("Users"); + } +} diff --git a/VCart.Infra/MongoDB/UserPerson.cs b/VCart.Infra/MongoDB/UserPerson.cs new file mode 100644 index 0000000..0843d8d --- /dev/null +++ b/VCart.Infra/MongoDB/UserPerson.cs @@ -0,0 +1,34 @@ +using global::MongoDB.Bson.Serialization.Attributes; +using global::MongoDB.Bson; + +namespace VCart.Infra.MongoDB +{ + + public class PersonUser + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + public string Id { get; set; } + + [BsonElement("Nome")] + public string Nome { get; set; } + + [BsonElement("Email")] + public string Email { get; set; } + + [BsonElement("País")] + public string Pais { get; set; } + + [BsonElement("AreaDeNegocio")] + public string AreaDeNegocio { get; set; } + + [BsonElement("Completado")] + public bool Completado { get; set; } + + [BsonElement("Valido")] + public bool Valido { get; set; } + + [BsonElement("DataHoraCriacao")] + public DateTime DataHoraCriacao { get; set; } + } +} diff --git a/VCart.Infra/VCart.Infra.csproj b/VCart.Infra/VCart.Infra.csproj index fa71b7a..52787ab 100644 --- a/VCart.Infra/VCart.Infra.csproj +++ b/VCart.Infra/VCart.Infra.csproj @@ -6,4 +6,9 @@ enable + + + + + diff --git a/VCart/Controllers/LanguageController.cs b/VCart/Controllers/LanguageController.cs new file mode 100644 index 0000000..560253c --- /dev/null +++ b/VCart/Controllers/LanguageController.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Mvc; +using System.Globalization; + +namespace VCart.Controllers +{ + public class LanguageController : Controller + { + public ActionResult ChangeLanguage(string lang) + { + if (!string.IsNullOrEmpty(lang)) + { + Thread.CurrentThread.CurrentCulture = new CultureInfo(lang); + Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); + } + + Response.Cookies.Append("Language", lang, new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }); + + return Redirect(Request.Headers["Referer"].ToString()); + } + } +} diff --git a/VCart/Controllers/LoginController.cs b/VCart/Controllers/LoginController.cs index da9579e..90e00e9 100644 --- a/VCart/Controllers/LoginController.cs +++ b/VCart/Controllers/LoginController.cs @@ -4,6 +4,7 @@ using System.Security.Claims; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication; +using Stripe; namespace VCart.Controllers { @@ -11,8 +12,9 @@ namespace VCart.Controllers { private readonly ILogger logger; private readonly IHttpClientFactory httpClientFactory; + private readonly StripeClient _stripeClient; - public LoginController(ILogger logger, IHttpClientFactory httpClientFactory) + public LoginController(ILogger logger, IHttpClientFactory httpClientFactory) { this.logger = logger; this.httpClientFactory = httpClientFactory; @@ -23,13 +25,22 @@ namespace VCart.Controllers return View("~/Views/Login/Index.cshtml"); } - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult ExternalLogin(string provider, string returnUrl) - { + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult ExternalLogin(string provider, string returnUrl) + { var redirectUrl = Url.Action("ExternalLoginCallback", "Login", new { ReturnUrl = returnUrl }); - var properties = new AuthenticationProperties { RedirectUri = "https://localhost:44377" + redirectUrl}; - return Challenge(properties, "Microsoft"); + var properties = new AuthenticationProperties { RedirectUri = "https://localhost:44377" + redirectUrl }; + return Challenge(properties, "Microsoft"); + } + + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult ExternalLoginGoogle(string provider, string returnUrl) + { + var redirectUrl = Url.Action("ExternalLoginCallback", "Login", new { ReturnUrl = returnUrl }); + var properties = new AuthenticationProperties { RedirectUri = "https://localhost:44377" + redirectUrl }; + return Challenge(properties, "Google"); } [AllowAnonymous] @@ -43,8 +54,9 @@ namespace VCart.Controllers var claims = new List { new Claim(ClaimTypes.Name, emailExist), - new Claim("FullName", HttpContext.User.FindFirst(ClaimTypes.GivenName).Value), - new Claim(ClaimTypes.Role, "Administrator"), + new Claim("FirstName", HttpContext.User.FindFirst(ClaimTypes.GivenName).Value), + new Claim("FullName", HttpContext.User.FindFirst(ClaimTypes.GivenName).Value + " " + HttpContext.User.FindFirst(ClaimTypes.Surname).Value), + new Claim(ClaimTypes.Role, "User"), }; var claimsIdentity = new ClaimsIdentity( @@ -81,9 +93,7 @@ namespace VCart.Controllers new ClaimsPrincipal(claimsIdentity), authProperties); - - - return RedirectToAction("Index", "Home"); + return RedirectToAction("Index", "Startup"); } ViewBag.ErrorTitle = $"Email claim not received from: Microsoft"; ViewBag.ErrorMessage = "Please contact support on info@dotnettutorials.net"; diff --git a/VCart/Controllers/PlansController.cs b/VCart/Controllers/PlansController.cs new file mode 100644 index 0000000..d27f60a --- /dev/null +++ b/VCart/Controllers/PlansController.cs @@ -0,0 +1,63 @@ +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using Stripe; + +namespace VCart.Controllers +{ + public class PlansController : Controller + { + public IActionResult Index() + { + return View(); + } + + [HttpPost] + public ActionResult Create(PaymentIntentCreateRequest request) + { + var paymentIntentService = new PaymentIntentService(); + var paymentIntent = paymentIntentService.Create(new PaymentIntentCreateOptions + { + Amount = CalculateOrderAmount(request.Items), + Currency = "usd", + // In the latest version of the API, specifying the `automatic_payment_methods` parameter is optional because Stripe enables its functionality by default. + AutomaticPaymentMethods = new PaymentIntentAutomaticPaymentMethodsOptions + { + Enabled = true, + }, + }); + + return Json(new + { + clientSecret = paymentIntent.ClientSecret + // [DEV]: For demo purposes only, you should avoid exposing the PaymentIntent ID in the client-side code. + //dpmCheckerLink = $"https://dashboard.stripe.com/settings/payment_methods/review?transaction_id={paymentIntent.ID}" + }); + } + + private long CalculateOrderAmount(Item[] items) + { + // Calculate the order total on the server to prevent + // people from directly manipulating the amount on the client + long total = 0; + foreach (Item item in items) + { + total += item.Amount; + } + return total; + } + + public class Item + { + [JsonProperty("id")] + public string Id { get; set; } + [JsonProperty("Amount")] + public long Amount { get; set; } + } + + public class PaymentIntentCreateRequest + { + [JsonProperty("items")] + public Item[] Items { get; set; } + } + } +} diff --git a/VCart/Controllers/StartupController.cs b/VCart/Controllers/StartupController.cs new file mode 100644 index 0000000..0b0134d --- /dev/null +++ b/VCart/Controllers/StartupController.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Mvc; + +namespace VCart.Controllers +{ + public class StartupController : Controller + { + public IActionResult Index() + { + return View(); + } + } +} diff --git a/VCart/Middle/RequestLocalizationMiddleware.cs b/VCart/Middle/RequestLocalizationMiddleware.cs new file mode 100644 index 0000000..bdc89df --- /dev/null +++ b/VCart/Middle/RequestLocalizationMiddleware.cs @@ -0,0 +1,29 @@ +namespace VCart.Middle +{ + using Microsoft.AspNetCore.Http; + using System.Globalization; + using System.Threading.Tasks; + + public class RequestLocalizationMiddleware + { + private readonly RequestDelegate _next; + + public RequestLocalizationMiddleware(RequestDelegate next) + { + _next = next; + } + + public async Task InvokeAsync(HttpContext context) + { + var cookie = context.Request.Cookies["Language"]; + if (!string.IsNullOrEmpty(cookie)) + { + var culture = new CultureInfo(cookie); + CultureInfo.CurrentCulture = culture; + CultureInfo.CurrentUICulture = culture; + } + + await _next(context); + } + } +} diff --git a/VCart/Program.cs b/VCart/Program.cs index da5ff80..22cf153 100644 --- a/VCart/Program.cs +++ b/VCart/Program.cs @@ -1,5 +1,10 @@ using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication.MicrosoftAccount; +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.Extensions.Options; +using Stripe; +using System.Globalization; var builder = WebApplication.CreateBuilder(args); @@ -22,17 +27,48 @@ options => options.SlidingExpiration = true; options.AccessDeniedPath = "/Forbidden/"; }) +.AddGoogle(googleOptions => +{ + googleOptions.ClientId = config["Authentication:Google:ClientId"]; + googleOptions.ClientSecret = config["Authentication:Google:ClientSecret"]; +}) .AddMicrosoftAccount(microsoftOptions => { microsoftOptions.ClientId = config["Authentication:Microsoft:ClientId"]; //microsoftOptions.ClientSecret = "2a7cb1bd-037a-49fa-9e5e-2b2655431af9"; microsoftOptions.ClientSecret = config["Authentication:Microsoft:ClientSecret"]; +}) +; + +builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); + +builder.Services.AddMvc() + .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) + .AddDataAnnotationsLocalization(); + +builder.Services.Configure(options => +{ + var supportedCultures = new List + { + new CultureInfo("en"), + new CultureInfo("pt-BR") + }; + + options.DefaultRequestCulture = new RequestCulture("pt-BR"); + options.SupportedCultures = supportedCultures; + options.SupportedUICultures = supportedCultures; }); +StripeConfiguration.ApiKey = builder.Configuration["Stripe:SecretKey"]; +builder.Services.AddControllersWithViews(); builder.Services.AddHttpClient(); var app = builder.Build(); +var locOptions = app.Services.GetService>(); +app.UseRequestLocalization(locOptions.Value); + +app.UseMiddleware(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) diff --git a/VCart/Properties/launchSettings.json b/VCart/Properties/launchSettings.json index 24f44d9..bf3ed30 100644 --- a/VCart/Properties/launchSettings.json +++ b/VCart/Properties/launchSettings.json @@ -7,7 +7,7 @@ "ASPNETCORE_ENVIRONMENT": "Development" }, "dotnetRunMessages": true, - "applicationUrl": "http://localhost:5094" + "applicationUrl": "http://192.168.0.27:5094" }, "https": { "commandName": "Project", diff --git a/VCart/Readme.md b/VCart/Readme.md new file mode 100644 index 0000000..562bbe5 --- /dev/null +++ b/VCart/Readme.md @@ -0,0 +1,3 @@ +Obter temas para o bootstrap: +https://www.bootpress.org/bootstrap.html?page=2of13 + diff --git a/VCart/Resource.Designer.cs b/VCart/Resource.Designer.cs new file mode 100644 index 0000000..c6bb7d9 --- /dev/null +++ b/VCart/Resource.Designer.cs @@ -0,0 +1,414 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace VCart { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class Resource { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resource() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VCart.Resource", typeof(Resource).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Food and Drink. + /// + public static string BU_Alimentacao { + get { + return ResourceManager.GetString("BU_Alimentacao", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beauty. + /// + public static string BU_Beleza { + get { + return ResourceManager.GetString("BU_Beleza", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Construction. + /// + public static string BU_Construção { + get { + return ResourceManager.GetString("BU_Construção", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Education. + /// + public static string BU_Educacao { + get { + return ResourceManager.GetString("BU_Educacao", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Green businesses. + /// + public static string BU_Empreendedorismo { + get { + return ResourceManager.GetString("BU_Empreendedorismo", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Health & Care. + /// + public static string BU_Saúde { + get { + return ResourceManager.GetString("BU_Saúde", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to PET and Animals. + /// + public static string BU_SetorPET { + get { + return ResourceManager.GetString("BU_SetorPET", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Information tecnology. + /// + public static string BU_TI { + get { + return ResourceManager.GetString("BU_TI", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Logistics. + /// + public static string BU_TransporteLogistica { + get { + return ResourceManager.GetString("BU_TransporteLogistica", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Clothes. + /// + public static string BU_Vestuário { + get { + return ResourceManager.GetString("BU_Vestuário", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Business Area. + /// + public static string BusinessAreaLabel { + get { + return ResourceManager.GetString("BusinessAreaLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Enter business area. + /// + public static string BusinessAreaPlaceholder { + get { + return ResourceManager.GetString("BusinessAreaPlaceholder", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Change language to find your country.. + /// + public static string ChangeLanguage { + get { + return ResourceManager.GetString("ChangeLanguage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Angola. + /// + public static string Country_Angola_Label { + get { + return ResourceManager.GetString("Country_Angola_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Australia. + /// + public static string Country_Australia_Label { + get { + return ResourceManager.GetString("Country_Australia_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Brazil. + /// + public static string Country_Brasil_Label { + get { + return ResourceManager.GetString("Country_Brasil_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cabo Verde. + /// + public static string Country_CaboVerde_Label { + get { + return ResourceManager.GetString("Country_CaboVerde_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Canada. + /// + public static string Country_Canada_Label { + get { + return ResourceManager.GetString("Country_Canada_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to USA. + /// + public static string Country_EUA_Label { + get { + return ResourceManager.GetString("Country_EUA_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Philipinas. + /// + public static string Country_Filipinas_Label { + get { + return ResourceManager.GetString("Country_Filipinas_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gana. + /// + public static string Country_Gana_Label { + get { + return ResourceManager.GetString("Country_Gana_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Guine Bissau. + /// + public static string Country_GuineBissau_Label { + get { + return ResourceManager.GetString("Country_GuineBissau_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to India. + /// + public static string Country_India_Label { + get { + return ResourceManager.GetString("Country_India_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Moçambique. + /// + public static string Country_Mocambique_Label { + get { + return ResourceManager.GetString("Country_Mocambique_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Niger. + /// + public static string Country_Nigeria_Label { + get { + return ResourceManager.GetString("Country_Nigeria_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Paquistan. + /// + public static string Country_Paquistao_Label { + get { + return ResourceManager.GetString("Country_Paquistao_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Portugal. + /// + public static string Country_Portugal_Label { + get { + return ResourceManager.GetString("Country_Portugal_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Quenia. + /// + public static string Country_Quenia_Label { + get { + return ResourceManager.GetString("Country_Quenia_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Timor Leste. + /// + public static string Country_TimorLeste_Label { + get { + return ResourceManager.GetString("Country_TimorLeste_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to United Kingdom. + /// + public static string Country_UK_Label { + get { + return ResourceManager.GetString("Country_UK_Label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Country. + /// + public static string CountryLabel { + get { + return ResourceManager.GetString("CountryLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Enter country. + /// + public static string CountryPlaceholder { + get { + return ResourceManager.GetString("CountryPlaceholder", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Email. + /// + public static string EmailLabel { + get { + return ResourceManager.GetString("EmailLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Company / Group. + /// + public static string GroupNameLabel { + get { + return ResourceManager.GetString("GroupNameLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Desired group name. + /// + public static string GroupPlaceHolder { + get { + return ResourceManager.GetString("GroupPlaceHolder", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Primary Data. + /// + public static string InitialFormTitle { + get { + return ResourceManager.GetString("InitialFormTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nome. + /// + public static string NameLabel { + get { + return ResourceManager.GetString("NameLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Phone number. + /// + public static string PhoneNumberLabel { + get { + return ResourceManager.GetString("PhoneNumberLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Save. + /// + public static string SaveButton { + get { + return ResourceManager.GetString("SaveButton", resourceCulture); + } + } + } +} diff --git a/VCart/Resource.pt-BR.Designer.cs b/VCart/Resource.pt-BR.Designer.cs new file mode 100644 index 0000000..54f176f --- /dev/null +++ b/VCart/Resource.pt-BR.Designer.cs @@ -0,0 +1,117 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace VCart { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class Resource___Copy { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resource___Copy() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VCart.Resource - Copy", typeof(Resource___Copy).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to . + /// + public static string BusinessAreaLabel { + get { + return ResourceManager.GetString("BusinessAreaLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + public static string CountryLabel { + get { + return ResourceManager.GetString("CountryLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + public static string EmailLabel { + get { + return ResourceManager.GetString("EmailLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + public static string GroupNameLabel { + get { + return ResourceManager.GetString("GroupNameLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + public static string PhoneNumberLabel { + get { + return ResourceManager.GetString("PhoneNumberLabel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + public static string SaveButton { + get { + return ResourceManager.GetString("SaveButton", resourceCulture); + } + } + } +} diff --git a/VCart/Resource.pt-BR.resx b/VCart/Resource.pt-BR.resx new file mode 100644 index 0000000..571a03c --- /dev/null +++ b/VCart/Resource.pt-BR.resx @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Área de negócio + + + Area de negócio + + + Alimentacao e bebidas + + + Beleza + + + Construção + + + Educação + + + Empreendedorismo verde + + + Saúde e bem-estar + + + Setor Pet + + + Tecnologia da informação & Informática + + + Transporte e logística + + + Vestuário e calçados + + + Troque o idioma para verificar seu país. + + + País + + + Selecione seu país + + + Angola + + + Australia + + + Brazil + + + Cabo Verde + + + Canada + + + EUA + + + Philipinas + + + Gana + + + Guine Bissau + + + India + + + Moçambique + + + Niger + + + Paquistan + + + Portugal + + + Quenia + + + Timor Leste + + + United Kingdom + + + Email + + + Empresa / Grupo + + + Nome desejado para o grupo + + + Dados iniciais + + + Nome + + + Telefone + + + Gravar + + \ No newline at end of file diff --git a/VCart/Resource.resx b/VCart/Resource.resx new file mode 100644 index 0000000..8f2d50b --- /dev/null +++ b/VCart/Resource.resx @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Business Area + + + Enter business area + + + Food and Drink + + + Beauty + + + Construction + + + Education + + + Green businesses + + + Health & Care + + + PET and Animals + + + Information tecnology + + + Logistics + + + Clothes + + + Change language to find your country. + + + Country + + + Enter country + + + Angola + + + Australia + + + Brazil + + + Cabo Verde + + + Canada + + + USA + + + Philipinas + + + Gana + + + Guine Bissau + + + India + + + Moçambique + + + Niger + + + Paquistan + + + Portugal + + + Quenia + + + Timor Leste + + + United Kingdom + + + Email + + + Company / Group + + + Desired group name + + + Primary Data + + + Nome + + + Phone number + + + Save + + \ No newline at end of file diff --git a/VCart/VCart.csproj b/VCart/VCart.csproj index f9324f5..68b2cf5 100644 --- a/VCart/VCart.csproj +++ b/VCart/VCart.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -10,7 +10,9 @@ + + @@ -18,4 +20,28 @@ + + + Resource.pt-BR.resx + True + True + + + True + True + Resource.resx + + + + + + Resource.pt-BR.Designer.cs + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + Resource.Designer.cs + + + diff --git a/VCart/Views/Home/Index.cshtml b/VCart/Views/Home/Index.cshtml index 50f0791..b4a63c5 100644 --- a/VCart/Views/Home/Index.cshtml +++ b/VCart/Views/Home/Index.cshtml @@ -1,4 +1,4 @@ - @{ +@{ ViewData["Title"] = "Home Page"; } @@ -7,6 +7,14 @@ } +@section Style { + +} +