public ActionResult Create([Bind(Include = "RefeicaoID,RegistoID,Data,Tipo")] Refeico refeico)
        {
            if (ModelState.IsValid)
            {
                var userId   = Convert.ToInt32(User.Identity.GetUserId());
                var refeicao = db.Refeicoes.FirstOrDefault(c => c.RegistoDiario.Objectivo.UserID == userId);
                int counter  = 0;
                if (refeicao == null)
                {
                    counter++;
                }
                double        counterkcal = 0, counterproteinas = 0, countergordura = 0, counterhc = 0;
                RegistoDiario registo = db.RegistoDiarios.FirstOrDefault(o => o.Objectivo.UserID == userId && o.Data == refeico.Data);
                if (registo == null)
                {
                    RegistoDiario registo1  = new RegistoDiario();
                    var           refeicoes = db.RefeicaoPratos.Include(i => i.Refeico).Where(q => q.Refeico.RegistoID == registo1.RegistoID);
                    var           user      = Convert.ToInt32(User.Identity.GetUserId());
                    Objectivo     objectivo = db.Objectivoes.FirstOrDefault(o => o.UserID == user && o.Data_fim == null);
                    if (objectivo != null)
                    {
                        registo1.ObjectivoID = objectivo.ObjectivoID;
                        registo1.Data        = refeico.Data;
                        db.RegistoDiarios.Add(registo1);
                        foreach (RefeicaoPrato i in refeicoes)
                        {
                            counterkcal      += (i.Dose / 100) * i.Prato.Kcal;
                            counterproteinas += (i.Dose / 100) * i.Prato.Proteinas;
                            countergordura   += (i.Dose / 100) * i.Prato.Gordura;
                            counterhc        += (i.Dose / 100) * i.Prato.HidCarbono;
                        }
                        refeico.RegistoID = registo1.RegistoID;
                        db.Refeicoes.Add(refeico);
                        db.SaveChanges();
                        counter++;
                        if (counter == 2)
                        {
                            TempData["UserGuide"] = "UserGuide";
                        }
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        TempData["Alert2"] = "Ainda não existe nenhum objectivo. Por favor, crie um objectivo primeiro.";

                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    var       user      = Convert.ToInt32(User.Identity.GetUserId());
                    var       refeicoes = db.RefeicaoPratos.Include(i => i.Refeico).Where(q => q.Refeico.RegistoID == registo.RegistoID);
                    Objectivo objectivo = db.Objectivoes.FirstOrDefault(o => o.UserID == user && o.Data_fim == null);
                    if (objectivo != null)
                    {
                        foreach (RefeicaoPrato i in refeicoes)
                        {
                            counterkcal      += (i.Dose / 100) * i.Prato.Kcal;
                            counterproteinas += (i.Dose / 100) * i.Prato.Proteinas;
                            countergordura   += (i.Dose / 100) * i.Prato.Gordura;
                            counterhc        += (i.Dose / 100) * i.Prato.HidCarbono;
                        }
                        refeico.RegistoID = registo.RegistoID;
                        db.Refeicoes.Add(refeico);
                        db.SaveChanges();
                        counter++;
                        if (counter == 2)
                        {
                            TempData["UserGuide"] = "UserGuide";
                        }
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        TempData["Alert2"] = "Ainda não existe nenhum objectivo. Por favor, crie um objectivo primeiro.";

                        return(RedirectToAction("Index"));
                    }
                }
            }

            ViewBag.RegistoID = new SelectList(db.RegistoDiarios, "RegistoID", "RegistoID", refeico.RegistoID);
            return(View(refeico));
        }
示例#2
0
        // GET: Objectivoes
        public ActionResult Index()
        {
            int        userId = Convert.ToInt32(User.Identity.GetUserId());
            Utilizador user   = db.Utilizadors.FirstOrDefault(o => o.UserID == userId);

            if (user.Nome == null)
            {
                ViewBag.SemDados = "Nao tem dados inseridos";
                return(View());
            }
            var         objectivoes = db.Objectivoes.Include(o => o.Utilizador).Where(o => o.UserID == userId);
            Objectivo   objectivo   = objectivoes.FirstOrDefault(o => o.UserID == userId && o.Data_fim == null);
            var         refeicoes   = db.RegistoDiarios.Include(i => i.Objectivo).Where(o => o.Objectivo.ObjectivoID == objectivo.ObjectivoID);
            RegistoPeso peso        = db.RegistoPesoes.FirstOrDefault(o => o.User_ID == userId && o.Data == DateTime.Today);
            var         refeico     = db.Refeicoes.FirstOrDefault(c => c.RegistoDiario.Objectivo.UserID == userId);
            var         today       = DateTime.Today;
            double      counter     = 0;
            double      counter2    = 0;

            if (objectivo != null)
            {
                int dayOfWeek = (int)today.DayOfWeek;
                int delta     = (int)DayOfWeek.Monday - dayOfWeek;
                if (delta > 0)
                {
                    delta -= 7;
                }

                List <DataPoint> datapoints = new List <DataPoint> {
                };
                List <DataPoint> intake     = new List <DataPoint> {
                };
                while (delta <= 0)
                {
                    var day     = today.AddDays(delta);
                    var registo = db.RegistoDiarios.FirstOrDefault(c => c.Objectivo.UserID == userId && c.Data == day);
                    if (registo != null)
                    {
                        SqlParameter                   RegistoPratos       = new SqlParameter("@RegistoID", registo.RegistoID);
                        IList <SumPratos_Result>       registoPratos       = db.Database.SqlQuery <SumPratos_Result>("SumPratos @RegistoID", RegistoPratos).ToList();
                        SqlParameter                   RegistoIngredientes = new SqlParameter("@RegistoID", registo.RegistoID);
                        IList <SumIngredientes_Result> registoIngredientes = db.Database.SqlQuery <SumIngredientes_Result>("SumIngredientes @RegistoID", RegistoIngredientes).ToList();
                        SqlParameter                   RegistoBebidas      = new SqlParameter("@RegistoID", registo.RegistoID);
                        IList <SumBebidas_Result>      registoBebidas      = db.Database.SqlQuery <SumBebidas_Result>("SumBebidas @RegistoID", RegistoBebidas).ToList();
                        RegistoDiario                  registado           = new RegistoDiario()
                        {
                            Total_Kcal = (double)(registoBebidas[0].Kcal + registoIngredientes[0].Kcal + registoPratos[0].Kcal)
                        };
                        datapoints.Add(new DataPoint(counter, registado.Total_Kcal, day.ToString("dddd")));
                        intake.Add(new DataPoint(counter, objectivo.Intake_diarioR, day.ToString("dddd")));
                        counter++;
                    }
                    else
                    {
                        datapoints.Add(new DataPoint(counter, null, day.ToString("dddd")));
                        intake.Add(new DataPoint(counter, objectivo.Intake_diarioR, day.ToString("dddd")));
                        counter++;
                    }
                    delta++;
                }

                while (intake.Count < 7)
                {
                    today = today.AddDays(1);
                    datapoints.Add(new DataPoint(counter, null, today.ToString("dddd")));
                    intake.Add(new DataPoint(counter, objectivo.Intake_diarioR, today.ToString("dddd")));
                    counter++;
                }
                ViewBag.DataPoints = JsonConvert.SerializeObject(datapoints);
                ViewBag.IntakeR    = JsonConvert.SerializeObject(intake);
                ViewBag.IMath      = JsonConvert.SerializeObject(objectivo.Intake_diarioR);
                List <DataPoint> registod = new List <DataPoint> {
                };
                counter = 0;
                foreach (RegistoDiario d in refeicoes.OrderBy(c => c.Data))
                {
                    SqlParameter                   RegistoPratos       = new SqlParameter("@RegistoID", d.RegistoID);
                    IList <SumPratos_Result>       registoPratos       = db.Database.SqlQuery <SumPratos_Result>("SumPratos @RegistoID", RegistoPratos).ToList();
                    SqlParameter                   RegistoIngredientes = new SqlParameter("@RegistoID", d.RegistoID);
                    IList <SumIngredientes_Result> registoIngredientes = db.Database.SqlQuery <SumIngredientes_Result>("SumIngredientes @RegistoID", RegistoIngredientes).ToList();
                    SqlParameter                   RegistoBebidas      = new SqlParameter("@RegistoID", d.RegistoID);
                    IList <SumBebidas_Result>      registoBebidas      = db.Database.SqlQuery <SumBebidas_Result>("SumBebidas @RegistoID", RegistoBebidas).ToList();
                    RegistoDiario                  registado           = new RegistoDiario()
                    {
                        Total_Kcal = (double)(registoBebidas[0].Kcal + registoIngredientes[0].Kcal + registoPratos[0].Kcal)
                    };
                    registod.Add(new DataPoint(counter, registado.Total_Kcal, d.Data.ToString("dd-MM-yyyy")));
                    counter++;
                }
                if (registod.Count() > 0)
                {
                    ViewBag.Registos = JsonConvert.SerializeObject(registod);
                }
            }

            var total           = db.RegistoPesoes.Include(o => o.Utilizador).Where(i => i.User_ID == userId);
            List <DataPoint> kg = new List <DataPoint> {
            };

            counter = 0;
            foreach (RegistoPeso i in total)
            {
                kg.Add(new DataPoint(counter, i.Peso, i.Data.Value.ToString("dd-MM-yyyy")));
                counter++;
            }
            List <DataPoint> objectiv = new List <DataPoint> {
            };

            counter = 0;
            foreach (Objectivo i in objectivoes)
            {
                if (i.Data_fim != null && i.Peso_Final != i.Peso_objectivo)
                {
                    counter2++;
                }
                if (i.Data_fim != null && i.Peso_Final == i.Peso_objectivo)
                {
                    counter++;
                }
            }

            objectiv.Add(new DataPoint(0, counter, "Concluidos com sucesso"));
            objectiv.Add(new DataPoint(1, counter2, "Terminados sem sucesso"));
            List <DataPoint> ordemCount = new List <DataPoint> {
            };

            counter = 0;
            SqlParameter      Id        = new SqlParameter("@UserID", userId);
            IList <Favorites> refeicao  = db.Database.SqlQuery <Favorites>("Top5 @UserID", Id).ToList();
            List <DataPoint>  favoritos = new List <DataPoint> {
            };

            for (int i = 0; i < refeicao.Count(); i++)
            {
                var refeicaoID = refeicao[i].PratoID;
                refeicao[i].Nome = db.Pratos.FirstOrDefault(o => o.PratosID == refeicaoID).Nome;
                favoritos.Add(new DataPoint(i, refeicao[i].Ocorrencias, refeicao[i].Nome));
            }
            counter  = 0;
            counter2 = 0;
            List <DataPoint> dias = new List <DataPoint> {
            };
            var listaobjectivos   = db.Objectivoes.Where(u => u.UserID == userId).OrderBy(q => q.Data_inicio);

            for (int i = 0; i < listaobjectivos.Count(); i++)
            {
                DateTime inicio = (DateTime)listaobjectivos.ToList()[i].Data_inicio;
                var      fim    = listaobjectivos.ToList()[i].Data_fim;

                if (inicio != null && fim != null)
                {
                    DateTime fim1 = (DateTime)listaobjectivos.ToList()[i].Data_fim;
                    counter += fim1.Subtract(inicio).TotalDays;
                    if (i + 1 < listaobjectivos.Count())
                    {
                        var novo = listaobjectivos.ToList()[i + 1].Data_inicio;
                        if (novo != null)
                        {
                            DateTime novo1 = (DateTime)listaobjectivos.ToList()[i + 1].Data_inicio;
                            counter2 += novo1.Subtract((DateTime)fim1).TotalDays;
                        }
                    }
                }
                if (inicio != null && fim == null)
                {
                    counter += DateTime.Today.Subtract(inicio).TotalDays;
                }
            }
            dias.Add(new DataPoint(0, counter, "Dias com objectivos"));
            dias.Add(new DataPoint(1, counter2, "Dias sem objectivos"));
            ViewBag.Total  = JsonConvert.SerializeObject(kg);
            ViewBag.Object = JsonConvert.SerializeObject(objectiv);
            if (favoritos.Count() > 0)
            {
                ViewBag.Favoritos = JsonConvert.SerializeObject(favoritos);
            }
            if (dias.Count() > 0)
            {
                ViewBag.Count = JsonConvert.SerializeObject(dias);
            }
            if (objectivo != null)
            {
                if (objectivo.Data_inicio > DateTime.Now)
                {
                    if (refeico == null)
                    {
                        ViewBag.UserGuide2 = "Sem refeicoes";
                    }
                    DateTime start = (DateTime)objectivo.Data_inicio;
                    ViewBag.TooSoon = Convert.ToInt32(start.Subtract(DateTime.Now).TotalDays);
                    return(View());
                }
            }
            if (objectivo == null)
            {
                var objectivos = db.Objectivoes.FirstOrDefault(c => c.UserID == userId);
                if (objectivos != null)
                {
                    ViewBag.Sem = "Sem objectivo";
                }
                else
                {
                    ViewBag.Sem       = "Sem objectivo";
                    ViewBag.Userguide = "Nenhum criado";
                }
                return(View());
            }
            if ((int)DateTime.Now.DayOfWeek == 1 && peso == null)
            {
                if (refeico == null)
                {
                    ViewBag.UserGuide2 = "Sem refeicoes";
                }
                ViewBag.Teste = "Por favor indique o seu novo peso";
                return(View());
            }
            else
            {
                if (refeico == null)
                {
                    ViewBag.UserGuide2 = "Sem refeicoes";
                }
                return(View());
            }
        }