sábado, 8 de diciembre de 2012

Validacion con REST en la capa MVC

A continuacion los pasos de un pequeño validacion con REST en una aplicacion MVC
Para nuestro caso vamos a realizar la validacion de no permitir ingresar un nuevo reserva de una cancha de fulbito en el mismo dia, la misma cancha y la misma hora de inicio y fin
Primer Paso.-
Implementamos en nuestra capa Controller lo siguiente para retornar el error de en caso encontrar una reserva con los criterios inicialmente mencionados como se muestra a continuacion

[HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                string postdata = "{\"Codigo\":\"" + collection["Codigo"] + "\",\"Cliente\":\"" + collection["clientes"] + "\",\"Cancha\":\"" + collection["canchas"] + "\" ,\"Fecha\":\"" + collection["txtFechaInicioEmision"] + "\",\"Inicio\":\"" + collection["horaini"] + "\",\"Fin\":\"" + collection["horafin"] + "\",\"Monto\":\"" + collection["Monto"] + "\" }";
                byte[] data = Encoding.UTF8.GetBytes(postdata);
                HttpWebRequest req = (HttpWebRequest)WebRequest
                    .Create("http://localhost:3634/Reservas.svc/Reservas");
                req.Method = "POST";
                req.ContentLength = data.Length;
                req.ContentType = "application/json";
                var reqStream = req.GetRequestStream();
                reqStream.Write(data, 0, data.Length);
                HttpWebResponse res = null;
                res = (HttpWebResponse)req.GetResponse();
                StreamReader reader = new StreamReader(res.GetResponseStream());
                string reservaJson = reader.ReadToEnd();
                JavaScriptSerializer js = new JavaScriptSerializer();
                Reserva1 recursoCreado = js.Deserialize<Reserva1>(reservaJson);
                return RedirectToAction("Index");

            }
            catch (WebException e)
            {
              HttpWebResponse resError = (HttpWebResponse)e.Response;
                    StreamReader reader2 = new StreamReader(resError.GetResponseStream());
                    string error = reader2.ReadToEnd();
                    JavaScriptSerializer js = new JavaScriptSerializer();
                    string errorMessage = js.Deserialize<string>(error);
                    TempData["mensaje"] = errorMessage;
                    return RedirectToAction("Create");
           
            }

            return RedirectToAction("Index");
        } 
 

 
Segundo Paso.-
Una vez implementado vamos a nuestro servicio REST para mostrar la validacion si en caso existe la reserva con los criterios mencionados en el primer punto

public Reserva CrearReserva(Reserva reservaACrear)
        {
           var existe = ObtenerReserva(reservaACrear);
            if (existe != null)
                throw new WebFaultException<string>("Ya existe una Reserva!!!", HttpStatusCode.NotFound);
            return dao.Crear(reservaACrear);
        }

 Como vemos hemos creado una variable (existe) que va ir a la base de datos a traves del metodo ObtenerReserva y retorna un objeto y si esto objeto es diferente de null capturaremos la exepcion y lo mostraremos en un mensaje en una nuestra vista(aspx)

<h3 style="color:Red"><%= TempData["mensaje"] %></h3> 



 

No hay comentarios:

Publicar un comentario