public ActionResult CalificarUsuario(long prodId) { if (!User.Identity.IsAuthenticated) { var url = Request.Url.LocalPath; return(RedirectToAction("Login", "Account", new { ReturnUrl = Request.Url.LocalPath })); } else { String tiendaId = Session["Tienda_Nombre"].ToString(); String usuarioId = User.Identity.Name; DataPuedoCalificar dpc = uC.PuedoCalificar(prodId, usuarioId, tiendaId); ViewBag.DataCalificacion = dpc; return(View()); } }
public DataPuedoCalificar PuedoCalificar(long idProducto, string idUsuario, string idTienda) { try { if (idProducto == 0) { throw new Exception("Debe pasar el identificador de un producto."); } if (idUsuario == null) { throw new Exception("Debe pasar el identificador de un usuario."); } chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { DataPuedoCalificar dpc = new DataPuedoCalificar(); //Verifica si idUsuario compró idProducto var qCompra = from cmp in context.compras where cmp.ProductoID == idProducto select cmp; if (qCompra.Count() == 0) { throw new Exception("Nadie ha comprado el producto " + idProducto + "."); } Compra c = qCompra.FirstOrDefault(); //Si idUsuario NO realizó la compra, devuelve false. if (c.UsuarioID != idUsuario) { dpc.puedoCalificar = false; return(dpc); } //Si idUsuario SI realizó la compra... //Chequeo que no haya realizado la calificación. var qCalif = from clf in context.calificaciones where clf.ProductoID == idProducto where clf.UsuarioEvalua == idUsuario select clf; //Si idUsuario ya realizó la calificación, no puede volver a calificar. if (qCalif.Count() > 0) { dpc.puedoCalificar = false; return(dpc); } //Si idUsuario es el comprador y no realizó la calificación. dpc.puedoCalificar = true; //Obtengo el id del vendedor. var qProd = from prd in context.productos where prd.ProductoID == idProducto select prd; if (qProd.Count() == 0) { throw new Exception("No existe el producto " + idProducto + "."); } Producto p = qProd.FirstOrDefault(); dpc.idVendedor = p.UsuarioID; dpc.precioProd = c.monto; dpc.nombreProd = p.nombre; dpc.idProd = p.ProductoID; dpc.fecha_compra = c.fecha_compra; return(dpc); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }