//Inserta acceso al iniciar sesion
 public async Task insertarAcceso(AccesoCliente accesoCliente)
 {
     using (var db = new MapeoCliente())
     {
         db.accesoClientes.Add(accesoCliente);
         await db.SaveChangesAsync();
     }
 }
 //Guarda token de login (S)
 public async Task almacenarTokenLogin(ClienteTokenLogin token)
 {
     using (var db = new MapeoCliente())
     {
         db.tokenLogin.Add(token);
         await db.SaveChangesAsync();
     }
 }
 //Elimina token al eliminar cuenta y cerrar sesion (S)
 public async Task eliminarToken(ClienteTokenLogin token)
 {
     using (var db = new MapeoCliente())
     {
         ClienteTokenLogin tokenC = db.tokenLogin.Where(x => x.IdCliente == token.IdCliente).FirstOrDefault();
         db.tokenLogin.Remove(tokenC);
         await db.SaveChangesAsync();
     }
 }
        //Modifica contraseƱa (recuperar)
        public async Task updateClave(Cliente cliente)
        {
            using (var db = new MapeoCliente())
            {
                Cliente usuarioAnterior = db.client.Where(x => x.IdCliente == cliente.IdCliente).First();
                usuarioAnterior.Contrasena = cliente.Contrasena;

                db.client.Attach(usuarioAnterior);

                var entry = db.Entry(usuarioAnterior);
                entry.State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
        }
        //Cierra acceso al cerrar sesion
        public async Task cerrarAcceso(int id_cliente)
        {
            using (var db = new MapeoCliente())
            {
                AccesoCliente acceso = db.accesoClientes.Where(x => x.IdCliente == id_cliente && x.FechaFin == null).FirstOrDefault();
                acceso.FechaFin = DateTime.Now;

                db.accesoClientes.Attach(acceso);

                var entry = db.Entry(acceso);
                entry.State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
        }
        //Eliminacion de registro (S)
        public async Task eliminarRegistro(Cliente cliente)
        {
            using (var db = new MapeoCliente())
            {
                Cliente clienteAnterior = db.client.Where(x => x.IdCliente == cliente.IdCliente).FirstOrDefault();
                clienteAnterior.Sesion = "inactivo";

                db.client.Attach(clienteAnterior);

                var entry = db.Entry(clienteAnterior);
                entry.State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
        }
        //Conversacion (S)
        public async Task coversar(Notificacion notificacion)
        {
            using (var db = new MapeoCliente())
            {
                Notificacion notificacionAnterior = db.notificacion.Where(x => x.Id == notificacion.Id).FirstOrDefault();
                notificacionAnterior.Conversacion = notificacion.Conversacion;

                db.notificacion.Attach(notificacionAnterior);

                var entry = db.Entry(notificacionAnterior);
                entry.State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
        }
 //Inserta registro cliente (S)
 public async Task inserCliente(RegistroClienteRequest clienteR)
 {
     using (var db = new MapeoCliente())
     {
         Cliente cliente = new Cliente();
         cliente.Nombrecl          = clienteR.Nombrecl;
         cliente.Apellido          = clienteR.Apellido;
         cliente.FechaDeNacimiento = clienteR.FechaDeNacimiento;
         cliente.Email             = clienteR.Email;
         cliente.Usuario           = clienteR.Usuario;
         cliente.Contrasena        = clienteR.Contrasena;
         cliente.Modificado        = "mototaxideluxe";
         cliente.Sesion            = "activo";
         cliente.Rol = 1;
         db.client.Add(cliente);
         await db.SaveChangesAsync();
     }
 }
        //Inserta el pedido de servicio (S)
        public async Task inserServicio(ServicioClienteRequest servicio, int idCliente)
        {
            using (var db = new MapeoCliente())
            {
                Notificacion notificacion = new Notificacion();
                notificacion.IdDestino           = servicio.idDestino;
                notificacion.IdUbicacion         = servicio.idUbicacion;
                notificacion.DescripcionServicio = servicio.descripcionServicio;
                notificacion.Pago         = servicio.pago;
                notificacion.IdCliente    = idCliente;
                notificacion.Tarifa       = servicio.tarifa;
                notificacion.Kilometro    = servicio.kilometros;
                notificacion.FechaCarrera = DateTime.Now.Date;
                notificacion.Estado       = "Pendiente";

                db.notificacion.Add(notificacion);
                await db.SaveChangesAsync();
            }
        }
        //Modifica registro (S)
        public async Task modificarCliente(Cliente cliente)
        {
            using (var db = new MapeoCliente())
            {
                Cliente clienteAnterior = db.client.Where(x => x.IdCliente == cliente.IdCliente).FirstOrDefault();
                clienteAnterior.Nombrecl          = cliente.Nombrecl;
                clienteAnterior.Apellido          = cliente.Apellido;
                clienteAnterior.FechaDeNacimiento = cliente.FechaDeNacimiento;
                clienteAnterior.Email             = cliente.Email;
                clienteAnterior.Usuario           = cliente.Usuario;
                clienteAnterior.Contrasena        = cliente.Contrasena;

                db.client.Attach(clienteAnterior);

                var entry = db.Entry(clienteAnterior);
                entry.State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
        }