/**
         * 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();
                }
            }
        }
Esempio n. 2
0
        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();
        }