コード例 #1
0
        public ActionResult Dados(string clientID)
        {
            PercursoVM percVM = new PercursoVM();

            percVM.ListaPercurosPercorridosVM = new List <PercursoPercorridoVM>();
            percVM.ListaPercursosCriadosVM    = new List <PercursoCriadoVM>();
            percVM.ListaComentarios           = new List <PercursoComentarioVM>();


            var listaPercursos        = db.PercursosPercorridos.Include(p => p.Percurso).Where(pr => pr.ClientID == clientID).ToList();
            var listaPercursosCriados = db.PercursosCriados.Include(p => p.Percurso).Where(pc => pc.IDCliente == clientID).ToList();
            var listaComentarios      = db.PercursoComentarios.Include(p => p.Percurso).Where(c => c.CriadorPercurso == clientID).ToList();


            float  contaKms   = 0;
            float  contaHoras = 0;
            float  media      = 0;
            int    nmrComentariosPorPercurso = 0;
            double numeroPercursosCriados    = 0;
            int    maiorNmrComentarios       = 0;

            foreach (var item in listaPercursos)
            {
                PercursoPercorridoVM ppercVM = new PercursoPercorridoVM();
                ppercVM.Nome            = item.Percurso.Nome;
                ppercVM.ID              = item.PercursoID;
                ppercVM.ClientID        = item.ClientID;
                ppercVM.Distancia       = item.Percurso.Distancia;
                ppercVM.KmsPercorridos += percVM.Distancia;
                contaKms          += item.Percurso.Distancia;
                ViewBag.TotalKms   = contaKms.ToString();
                contaHoras        += item.Percurso.DuracaoAproximada;
                ViewBag.TotalHoras = contaHoras.ToString();
                media         = contaKms / contaHoras;
                ViewBag.Media = media.ToString();

                percVM.ListaPercurosPercorridosVM.Add(ppercVM);
            }
            var    maior             = 0;
            double numeroComentarios = 0;

            foreach (var item in listaComentarios)
            {
                PercursoComentarioVM pComentVM = new PercursoComentarioVM();

                pComentVM.PercursoID    = item.PercursoID;
                ViewBag.ID              = pComentVM.PercursoID;
                pComentVM.NomePercurso  = item.Percurso?.Nome ?? "Sem Correspondencia";
                pComentVM.Classificacao = item.Classificacao;
                pComentVM.Comentario    = item.Comentario;

                var listaComentPorPercurso = listaComentarios.Where(p => p.PercursoID == item.PercursoID).ToList();

                if (listaComentPorPercurso.Count > 1 && numeroComentarios < listaComentarios.Count)
                {
                    int somaPerc = 0;
                    foreach (var perc in listaComentPorPercurso)
                    {
                        somaPerc += perc.Classificacao;
                        nmrComentariosPorPercurso++;
                        int classPerc = somaPerc / nmrComentariosPorPercurso;
                        pComentVM.Classificacao = classPerc;

                        if (nmrComentariosPorPercurso > maiorNmrComentarios)
                        {
                            maiorNmrComentarios     = nmrComentariosPorPercurso;
                            ViewBag.MaisComentarios = perc.Percurso.Nome;
                        }
                    }
                    nmrComentariosPorPercurso = 0;
                    numeroComentarios         = nmrComentariosPorPercurso - 1;
                }
                numeroComentarios++;
                if (pComentVM.Classificacao > maior)
                {
                    maior         = pComentVM.Classificacao;
                    ViewBag.Maior = maior.ToString();
                    ViewBag.Nome  = pComentVM.NomePercurso;
                }

                if (numeroComentarios > listaComentarios.Count)
                {
                    numeroComentarios--;
                }

                percVM.ListaComentarios.Add(pComentVM);
            }

            foreach (var item in listaPercursosCriados)
            {
                PercursoCriadoVM pCriadoVM = new PercursoCriadoVM();
                pCriadoVM.IDCliente    = item.IDCliente;
                pCriadoVM.NomeCliente  = item.NomeCliente;
                pCriadoVM.PercursoID   = item.PercursoID;
                pCriadoVM.NomePercurso = item.Percurso.Nome;
                numeroPercursosCriados++;
                percVM.ListaPercursosCriadosVM.Add(pCriadoVM);
            }


            double percentagem = (listaComentarios.Count / numeroPercursosCriados) * 100;

            ViewBag.Percentagem = percentagem.ToString();

            return(View(percVM));
        }
コード例 #2
0
        // GET: Percursos/Details/5
        //[Authorize(Roles = "Supervisor,Admin")]
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Percurso percurso = db.Percursos.Where(p => p.ID == id).
                                Include("POIs").Include("FotoPercursos").Include("PercursoComentarios").Include("Especies").FirstOrDefault();

            PercursosCriados percCriado = db.PercursosCriados.Where(pc => pc.PercursoID == id).FirstOrDefault();

            //PercursosPercorridos percursosPercorridos = db.PercursosPercorridos.Include(p => p.Percurso).Where(ppc => ppc.PercursoID == id).FirstOrDefault();

            PercursoVM percursoVM = new PercursoVM();

            percursoVM.ListaPOIVM          = new List <PoiVM>();
            percursoVM.ListaFotoPercursoVM = new List <FotoPercursoVM>();
            percursoVM.ListaFotoPoiVM      = new List <FotoPoiVM>();
            percursoVM.ListaComentarios    = new List <PercursoComentarioVM>();
            percursoVM.ListaEspeciesVM     = new List <EspecieViewModel>();

            percursoVM.ID          = percurso.ID;
            percursoVM.Nome        = percurso.Nome;
            percursoVM.Descricao   = percurso.Descricao;
            percursoVM.Distancia   = percurso.Distancia;
            percursoVM.Duracao     = percurso.DuracaoAproximada;
            percursoVM.Dificuldade = percurso.Dificuldade;
            percursoVM.Tipologia   = percurso.Tipologia;
            percursoVM.ClientID    = percCriado.IDCliente;
            percursoVM.NomeCliente = percCriado.NomeCliente;
            percursoVM.Latitude    = percurso.GPS_Lat_Inicio;
            percursoVM.Longitude   = percurso.GPS_Long_Inicio;
            percursoVM.Kml         = percurso.KmlPath;

            foreach (var poi in percurso.POIs)
            {
                PoiVM poiVM = new PoiVM();

                poiVM.Nome      = poi.Nome;
                poiVM.Descricao = poi.Descricao;
                poiVM.Latitude  = poi.GPS_Lat;
                poiVM.Longitude = poi.GPS_Long;
                percursoVM.ListaPOIVM.Add(poiVM);

                //FotoPoiVM fotoPoiVM = new FotoPoiVM();
                //fotoPoiVM.Caminho = poi.FotoPoi.Caminho;
                //percursoVM.ListaFotoPoiVM.Add(fotoPoiVM);
            }

            foreach (var foto in percurso.FotoPercursos)
            {
                FotoPercursoVM fotoVM = new FotoPercursoVM();
                fotoVM.ID      = foto.ID;
                fotoVM.GPS_Lat = foto.GPS_Lat;
                fotoVM.GPS_Lng = foto.GPS_Long;
                fotoVM.Caminho = foto.Caminho;
                percursoVM.ListaFotoPercursoVM.Add(fotoVM);
            }

            foreach (var comentario in percurso.PercursoComentarios)
            {
                PercursoComentarioVM percComent = new PercursoComentarioVM();

                percComent.ID            = comentario.ID;
                percComent.Classificacao = comentario.Classificacao;
                percComent.UserName      = comentario.UserName;
                percComent.SomaRating   += comentario.Classificacao;
                //ViewBag.SomaRating = percComent.SomaRating;
                percComent.ContRating++;
                //ViewBag.ContRating = percComent.ContRating;
                percComent.Comentario = comentario.Comentario;
                percComent.DataHora   = comentario.DataHora;
                percursoVM.ListaComentarios.Add(percComent);
            }

            foreach (var espec in percurso.Especies)
            {
                EspecieViewModel especVM = new EspecieViewModel();

                especVM.ID   = espec.ID;
                especVM.Nome = espec.Nome;
                percursoVM.ListaEspeciesVM.Add(especVM);
            }


            var ratings = percursoVM.ListaComentarios;

            if (ratings.Count() > 0)
            {
                var ratingSum = ratings.Sum(d => d.Classificacao);
                ViewBag.SomaRating = ratingSum;
                var ratingCount = ratings.Count();
                ViewBag.ContRating = ratingCount;
                var classTotal = ratingSum / ratingCount;
                percursoVM.Classificacao = classTotal;
            }
            else
            {
                ViewBag.SomaRating = 0;
                ViewBag.ContRating = 0;
            }
            if (percurso == null)
            {
                return(HttpNotFound());
            }

            return(View(percursoVM));
        }