/** * When the user create the design (add order item in cart) as a guest, and then he login or register, * we need to merge his guest data into the user's data */ private async Task MergeUsers(string customerEmail) { var ecommercePreffix = ConfigurationManager.AppSettings["EcommerceUserIdPreffix"]; var user = await UserManager.FindByEmailAsync(customerEmail); var userId = ecommercePreffix + "_" + Request.Cookies["docket_manager_session_guid"].Value; using (var db = ApplicationDbContext.Create()) { var projects = await db.Projects.Where(x => x.UserId == userId).ToListAsync(); if (projects.Count != 0) { var onLoginModel = new OnLoginModel() { EcommerceDomain = ConfigurationManager.AppSettings["EcommerceUserIdPreffix"], Email = user.Email, FirstName = user.UserName, Id = user.Id, UserGuid = Request.Cookies["docket_manager_session_guid"].Value, Origin = ConfigurationManager.AppSettings["AppUrl"] }; _userService = new UserService(); await _userService.MergeUsers(onLoginModel); foreach (var project in projects) { project.UserId = ecommercePreffix + "_" + user.Id; } await db.SaveChangesAsync(); } } }
public async Task MergeUsers(OnLoginModel model) { var url = $"{ConfigurationManager.AppSettings["BackOfficeBackendUrl"]}/api/v1/tenants/{ConfigurationManager.AppSettings["TenantId"]}/integrations/onlogin"; var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json"); var response = await _client.PostAsync(url, content); var c = await response.Content.ReadAsStringAsync(); }