Exemplo n.º 1
0
        public async Task <IHttpActionResult> crearCarrera(carreras carrera)
        {
            //verificar elementos nulos
            if (carrera.idCliente > 0 &&                                             //cliente
                carrera.longitudOrigen != null && carrera.latitudOrigen != null &&   //origen
                carrera.longitudDestino != null && carrera.latitudDestino != null && //destino
                carrera.idMetodoPago > 0 && carrera.idViaSolicitud > 0)              //metodo pago / via solicitud
            {
                //verificar formato de posicion
                string patron            = @"^(\-?\d+\.\d+)";
                var    validarLatOrigen  = Regex.Match(carrera.latitudOrigen.ToString(), patron);
                var    validarLongOrigen = Regex.Match(carrera.longitudOrigen.ToString(), patron);
                var    validarLatDest    = Regex.Match(carrera.latitudDestino.ToString(), patron);
                var    validarLongDest   = Regex.Match(carrera.longitudDestino.ToString(), patron);

                if (validarLatOrigen.Success && validarLatOrigen.Success && validarLatDest.Success && validarLongDest.Success)
                {
                    //buscar cliente
                    clientes cliente = db.clientes.Find(carrera.idCliente);

                    if (cliente != null)
                    {
                        carrera.idEstado       = 41; // Creada como carrear "En Espera"
                        carrera.fechaSolicitud = DateTime.Now;

                        if (ModelState.IsValid)
                        {
                            //agregar a bd
                            try
                            {
                                db.carreras.Add(carrera);
                                await db.SaveChangesAsync();

                                //crear las solicitudes a los taxistas
                                if (taxistas.solicitudTaxista(carrera))
                                {
                                    //string msj;
                                    //msj = carrera.ToString();
                                    //Push envios = new Push(msj);
                                    //envios.EnviarTodosTaxistas();

                                    var json = JsonConvert.SerializeObject(carrera);

                                    Push envios = new Push(json);
                                    envios.EnviarTodosTaxistas();

                                    return(Ok("Su solicitud esta siendo atendida.  Gracias."));
                                }
                                else
                                {
                                    //borrar la carrera y las solicitudes
                                    var solicitudesCarrera = db.solicitudes.Where(x => x.idCarrera == carrera.idCarrera);

                                    if (solicitudesCarrera.Count() > 0)
                                    {
                                        db.solicitudes.RemoveRange(solicitudesCarrera);
                                    }

                                    db.carreras.Remove(carrera);

                                    db.SaveChanges();
                                    //fin borrado

                                    return(BadRequest("Ha ocurrido un error y no se ha podido crear la carrera.  Intente de nuevo."));
                                }
                            }
                            catch (Exception e)
                            {
                                return(BadRequest("Ha ocurrido un error y no se ha podido crear la carrera.  Intente de nuevo."));
                            }
                        }
                        else
                        {
                            return(BadRequest("Los datos proporcionados no son correctos"));
                        }
                    }
                    else
                    {
                        return(BadRequest("El cliente no existe"));
                    }
                }
                else
                {
                    return(BadRequest("Ubicación origen y/o destino incorrecta(s)"));
                }
            }
            else
            {
                return(BadRequest("No todos los datos necesarios han sido proporcionados"));
            }
        }