public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                TempData["tipo"] = "alert alert-warning";
                TempData["message"] = "Colocar correo y contraseña con el formato indicado";
                return Redirect("~/Home/Index");
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            CuentaUsuario cuentausuario = db.CuentaUsuario.Find(model.Email);
            PuntoVenta punt = new PuntoVenta();
            try
            {
                if (cuentausuario.codPerfil == 2)
                {
                    string macAddresses = "";
                    DateTime hora = DateTime.Now;
                    List<Turno> turnos = db.Turno.Where(c => c.usuario == cuentausuario.correo).ToList();
                    turnos = turnos.Where(c => c.fecha.Date == DateTime.Today.Date).ToList();
                    foreach (Turno turno in turnos)
                    {
                        TurnoSistema tS = turno.TurnoSistema;
                        string horaInicio = tS.horIni;
                        string horaFin = tS.horFin;
                        DateTime horaInicioDate = DateTime.ParseExact(horaInicio, "H:m:s", null);
                        DateTime horaFinDate = DateTime.ParseExact(horaFin, "H:m:s", null);
                        if (horaInicioDate <= hora && hora <= horaFinDate)
                        {
                            macAddresses = turno.PuntoVenta.dirMAC;
                            break;
                        }
                    }

                    /*foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
                    {
                        if (nic.OperationalStatus == OperationalStatus.Up)
                        {
                            macAddresses += nic.GetPhysicalAddress().ToString();
                            break;
                        }
                    }*/
                    if (macAddresses != "")
                    {
                        List<PuntoVenta> lpu = db.PuntoVenta.Where(c => c.dirMAC == macAddresses).ToList();
                        punt = lpu.First();
                    }
                }

            }
            catch (Exception ex)
            {
                try
                {
                    if (cuentausuario.codPerfil == 2)
                    {
                        TempData["tipo"] = "alert alert-warning";
                        TempData["message"] = "Iniciar Sesión desde un punto de venta registrado.";
                    }
                }
                catch (Exception ex2)
                {
                    TempData["tipo"] = "alert alert-warning";
                    TempData["message"] = "Correo no registrado.";
                }

                return Redirect("~/Home/Index");
            }

            if (cuentausuario.codPerfil != 1 && cuentausuario.estado == false) return Redirect("~/Home/Index");

            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            Session["orgPago"] = null;
            Session["orgPago2"] = null;
            Session["vendAsig"] = null;
            Session["Pagos2"] = null;
            Session["ListaTurnoVendedor"] = null;
            Session["Pagos"] = null;
            Session["Pendiente"] = null;
            Session["Pendiente2"] = null;
            Session["EventoSeleccionadoPago"] = null;
            Session["EventoSeleccionadoPago2"] = null;
            TempData["tipo"] = "alert alert-warning";
            TempData["message"] = "Logueo Incorrecto";

            switch (result)
            {
                case SignInStatus.Success:
                    TempData["tipo"] = "alert alert-success";
                    TempData["message"] = "Logueado Correctamente";
                    if (cuentausuario.codPerfil == 1)
                    {
                        Session["UsuarioLogueado"] = cuentausuario;
                        return Redirect("~/Home/Index");
                    }
                    else
                    {
                        if (cuentausuario.codPerfil == 2)
                        {
                            Turno tu = null;
                            DateTime hoy = DateTime.Now;
                            int idPunto = 1;
                            TimeSpan da = DateTime.Now.TimeOfDay;
                            TurnoSistema ts = new TurnoSistema();
                            List<TurnoSistema> listaturno = db.TurnoSistema.AsNoTracking().Where(c => c.activo == true).ToList();
                            for (int i = 0; i < listaturno.Count; i++)
                            {
                                if ((TimeSpan.Parse(listaturno[i].horIni) < da) && (TimeSpan.Parse(listaturno[i].horFin) > da))
                                {
                                    ts = listaturno[i];
                                }
                            }
                            Session["ListaTurnoHoy"] = null;
                            List<Turno> liT = new List<Turno>();
                            List<Turno> liTV = new List<Turno>();
                            liT = db.Turno.AsNoTracking().Where(j => j.usuario == cuentausuario.usuario && j.codPuntoVenta == punt.codPuntoVenta && j.codTurnoSis == ts.codTurnoSis).ToList();
                            liTV = db.Turno.AsNoTracking().Where(j => j.codPuntoVenta == punt.codPuntoVenta && j.codTurnoSis == ts.codTurnoSis).ToList();
                            liTV = liTV.Where(c => c.fecha == hoy.Date).ToList();
                            Session["ListaTurnoHoy"] = liTV;
                            Session["PuntoVentaLoguedo"] = punt.codPuntoVenta;
                            if (liT != null)
                            {
                                for (int i = 0; i < liT.Count; i++)
                                {
                                    if (liT[i].fecha.Date == hoy.Date)
                                    {
                                        tu = liT[i];
                                        Session["TurnoHoy"] = tu;
                                        break;
                                    }
                                }
                            }
                            if (tu != null && tu.estado == "Pendiente")
                            {
                                int idPol = 4;
                                int limite = (int)db.Politicas.Find(idPol).valor;
                                TimeSpan time1 = TimeSpan.FromMinutes(limite);
                                TimeSpan horalimite = TimeSpan.Parse(ts.horIni);
                                TimeSpan hora1 = horalimite.Add(time1);
                                //db.Entry(tu).State = EntityState.Modified;
                                if (hora1 > da)
                                {
                                    tu.estado = "Asistio";
                                }
                                else
                                {
                                    tu.estado = "Tarde";
                                }
                                tu.horaRegistro = da.ToString(@"hh\:mm\:ss");
                                Session["MensajeIngresoTurno"] = "Hora de ingreso registrada a las: " + da.ToString(@"hh\:mm\:ss") + " hs";
                                db.SaveChanges();
                                //db.Entry(tu).State = EntityState.Detached;
                            }
                        }
                        Session["UsuarioLogueado"] = cuentausuario;
                        return Redirect("~/Home/Index2");
                    }
                case SignInStatus.LockedOut:
                    return View("Lockout");
                case SignInStatus.RequiresVerification:
                    return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                case SignInStatus.Failure:
                    return Redirect("~/Home/Index");
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return Redirect("~/Home/Index");
            }
        }
 public ActionResult RegisterPunto(PuntoVentaModel model)
 {
     if (ModelState.IsValid)
     {
         PuntoVenta punto = new PuntoVenta();
         //PuntoVenta puntoL = db.PuntoVenta.ToList().Last();
         //punto.codPuntoVenta = puntoL.codPuntoVenta + 1;
         punto.dirMAC = model.mac;
         punto.estaActivo = true;
         punto.ubicacion = model.ubicacion;
         punto.idProvincia = model.idProv;
         punto.idRegion = model.idRegion;
         punto.nombre = model.nombre;
         db.PuntoVenta.Add(punto);
         db.SaveChanges();
         return RedirectToAction("Index", "PuntoVenta");
     }
     List<Region> listaDep = db.Region.Where(c => c.idRegPadre == null).ToList();
     List<Region> listProv = new List<Region>();
     ViewBag.DepID = new SelectList(listaDep, "idRegion", "nombre");
     ViewBag.ProvID = new SelectList(listProv, "idProv", "nombre");
     return View("Index");
 }