public IHttpActionResult responderSolicitud(RespuestaSolicitud respuesta) { //buscar solicitud if (respuesta.idSolicitud > 0) { solicitudes solicitud = db.solicitudes.Find(respuesta.idSolicitud); if (solicitud != null) { if (respuesta.respuesta) { //solicitud es aceptada carreras carrera = db.carreras.Find(solicitud.idCarrera); taxistas taxista = db.taxistas.Find(respuesta.idTaxista); if (carrera != null || taxista != null) { //buscar que la carrera no haya sido aceptada por nadie if (carrera.idTaxista == null) { //ELIMINAR todas las demas solicitudes para esta carrera var solicitudesCarrera = db.solicitudes.Where(x => x.idCarrera == carrera.idCarrera && x.idSolicitud != solicitud.idSolicitud); db.solicitudes.RemoveRange(solicitudesCarrera); //aceptar solicitud if (respuesta.idTaxista == solicitud.idTaxista) { solicitud.idEstadoSolicitud = 41; //aceptada; carrera.idTaxista = respuesta.idTaxista; carrera.fechaInicioCarrera = DateTime.Now; carrera.idEstado = 71; //en curso db.Entry(solicitud).State = EntityState.Modified; string msj; //ClientesAPIController clientes = new ClientesAPIController(); //msj = clientes.getNotificacionesCliente((int)carrera.idCliente).ToString(); List<notificacionCliente> notificaciones = clientes.getNotificaciones((int)carrera.idCliente); var json = JsonConvert.SerializeObject(notificaciones); Push envios = new Push(json); envios.EnviarClientes((int)carrera.idCliente); } else { return BadRequest("Esta solicitud no fue hecha para usted"); } //guardar cambios try { db.SaveChangesAsync(); //creando notificacion para cliente clientes.crearNotificaciones(idCarrera: carrera.idCarrera); return Ok("Su solicitud ha sido aceptada"); } catch(Exception e) { return BadRequest("No se ha podido guardar cambios"); } } else { return BadRequest("Esta carrera ya esta siendo atendida"); } } else { return BadRequest("Esta carrera no existe"); } } else //solicitud es rechazada { solicitud.idEstadoSolicitud = 31;//Rechazada db.Entry(solicitud).State = EntityState.Modified; try { db.SaveChangesAsync(); return Ok("Solicitud rechazada"); } catch { return BadRequest("No se ha podido guardar el cambio"); } } } else { return BadRequest("La solicitud no existe"); } } else { return BadRequest("La solicitud no existe"); } }