public ActionResult EditUser([DataSourceRequest] DataSourceRequest request, AdministratorRead product)
        {
            if (product != null && ModelState.IsValid)
            {
                // productService.Update(product);
            }

            return(Json(new[] { product }.ToDataSourceResult(request, ModelState)));
        }
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            //if (!ModelState.IsValid)
            //{
            //    return View(model);
            //}
            AdministratorRead jeeUser = null;


            HttpClient Client     = new HttpClient();
            var        dotNetUser = await UserManager.FindByEmailAsync(model.Email);

            var dotNetUser2 = await UserManager.FindByNameAsync(model.Email);

            if (dotNetUser == null && dotNetUser2 == null) //user n'existe pas , ni par email ou login
            {
                Client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage response = Client.GetAsync("http://localhost:18080/gestion-resources-humaine-web/api/adnene/user/getUserByEmailAndPassword/" + model.Email + "/" + model.Password).Result;
                if (response.IsSuccessStatusCode)
                {
                    jeeUser = response.Content.ReadAsAsync <AdministratorRead>().Result;
                }

                if (jeeUser == null || jeeUser.email == null) //si recherche user par mail ne marche pas , on cherche par login
                {
                    HttpResponseMessage response2 = Client.GetAsync("http://localhost:18080/gestion-resources-humaine-web/api/adnene/user/getUserByLogin/" + model.Email).Result;
                    if (response2.IsSuccessStatusCode)
                    {
                        jeeUser = response2.Content.ReadAsAsync <AdministratorRead>().Result;
                    }
                }



                if (jeeUser != null)
                {
                    ApplicationUser user = null;
                    if (jeeUser.address != null)
                    {
                        user = new ApplicationUser {
                            jeeUserId = jeeUser.id, UserName = jeeUser.login, Email = jeeUser.email, role = jeeUser.role, country = jeeUser.address.country, state = jeeUser.address.state, city = jeeUser.address.city, street = jeeUser.address.addressLine2, zipCode = jeeUser.address.zipCode, cin = jeeUser.cin, first_name = jeeUser.first_name, last_name = jeeUser.last_name, house_number = jeeUser.address.addressLine1, phone_number = jeeUser.phone_number, PhoneNumber = jeeUser.phone_number, picture = jeeUser.picture, registration_date = DateTime.Now, status = jeeUser.status
                        }
                    }
                    ;
                    else
                    {
                        user = new ApplicationUser {
                            jeeUserId = jeeUser.id, UserName = jeeUser.login, Email = jeeUser.email, role = jeeUser.role, cin = jeeUser.cin, first_name = jeeUser.first_name, last_name = jeeUser.last_name, phone_number = jeeUser.phone_number, PhoneNumber = jeeUser.phone_number, picture = jeeUser.picture, registration_date = DateTime.Today, status = jeeUser.status
                        }
                    };

                    var result2 = await UserManager.CreateAsync(user, model.Password);

                    if (result2.Succeeded)
                    {
                        //await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                    }
                    else
                    {
                        AddErrors(result2);
                        return(View(model));
                    }
                }
            }

            HttpResponseMessage response3 = Client.GetAsync("http://localhost:18080/gestion-resources-humaine-web/api/login/login/password").Result;

            if (response3.IsSuccessStatusCode)
            {
                IEnumerable <string> headerValues = response3.Headers.GetValues("Authorization");
                List <string>        l            = headerValues.ToList <string>();
                string bearer = l.First <string>();
                string token  = bearer.Substring("Bearer ".Length).Trim();
                Session["JeeToken"] = token;
                Debug.WriteLine(token);
            }



            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            ApplicationUser appUser = await UserManager.FindByEmailAsync(model.Email);

            if (appUser == null)
            {
                appUser = await UserManager.FindByNameAsync(model.Email);
            }
            var result = SignInStatus.Failure;

            if (appUser != null && !appUser.status.Equals("blocked") && !(appUser.status.Equals("pending")))
            {
                result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

                if (result == SignInStatus.Failure)// si l'utilisateur entre une adresse email au lieu du login ,alors il le trouve pas eet donc on doit recuperer le login pour se connecter
                {
                    var userByMail = UserManager.FindByEmail(model.Email);
                    if (userByMail != null)
                    {
                        result = await SignInManager.PasswordSignInAsync(userByMail.UserName, model.Password, model.RememberMe, shouldLockout : false);
                    }
                }
            }


            switch (result)
            {
            case SignInStatus.Success:


                Session["dotNetUser"] = appUser;  // type=ApplicationUser
                Session["JeeUser"]    = jeeUser;  //type=Models.AdministratorRead



                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }