public ActionResult <string> SetPlano([FromBody] dynamic rec)
        {
            lock (_system)
            {
                var jobject = JObject.Parse(JsonSerializer.Serialize(rec));


                if (!_system.isUserOnline(jobject.valueST.ToString()))
                {
                    return(Unauthorized("Client Offline"));
                }

                ActionResult <string> ret = BadRequest("Impossível inserir plano alimentar");

                string email = jobject.GetValue("email");

                JObject plano = jobject.GetValue("planoAlimentar");

                List <Refeiçao> lista = new List <Refeiçao>();

                JArray ja = plano.GetValue("lista_refeicoes").ToObject <JArray>();

                try
                {
                    if (email.Equals(""))
                    {
                        throw new Exception("EMAIL BROKEN");
                    }
                    foreach (JObject v in ja)
                    {
                        Refeiçao re = new Refeiçao(v.GetValue("nome").ToString(),
                                                   v.GetValue("descricao").ToString()
                                                   );
                        lista.Add(re);
                    }

                    PlanoAlimentar pa = new PlanoAlimentar(
                        email,
                        plano.GetValue("nome").ToString(),
                        plano.GetValue("frequencia").ToString(),
                        int.Parse(plano.GetValue("refeicoes_livres").ToString()),
                        DateTime.Parse(plano.GetValue("data_fim").ToString()),
                        lista
                        );

                    if (_system.AddPlanoAlimentar(pa))
                    {
                        ret = Ok();
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }

                return(ret);
            }
        }
Exemple #2
0
        public List <PlanoAlimentar> GetPlanoAlimentar(string cliente_email)
        {
            List <PlanoAlimentar> planos = new List <PlanoAlimentar>();

            try
            {
                if (connection.State == ConnectionState.Closed)
                {
                    connection.Open();
                }

                string sqlCommand = "select idPlano_Alimentar from PlanoAlimentar_do_Cliente where Cliente_email = @CLIENTE_EMAIL";

                MySqlCommand command = new MySqlCommand(sqlCommand, connection);

                command.Parameters.Add("@CLIENTE_EMAIL", MySqlDbType.VarChar);
                command.Parameters["@CLIENTE_EMAIL"].Value = cliente_email;

                MySqlDataReader reader = command.ExecuteReader();

                List <int> listaIdPlanos = new List <int>();

                while (reader.Read())
                {
                    listaIdPlanos.Add(reader.GetInt16(0));
                }

                reader.Close();

                DateTime now = DateTime.Now.Date;

                for (int i = 0; i < listaIdPlanos.Count; i++)
                {
                    string sqlCommandPlanoAlimentar = "select * from Plano_Alimentar where idPlano_Alimentar = @ID and " +
                                                      "data_Fim > @DATA";
                    MySqlCommand commandPlanoAlimentar = new MySqlCommand(sqlCommandPlanoAlimentar, connection);

                    string sqlCommandRefeiçao = "select * from Refeiçao e left join Plano_Alimentar_Refeiçoes ept " +
                                                "on e.idRefeiçao = ept.idRefeiçao where ept.idPlano_Alimentar = @ID";
                    MySqlCommand commandRefeiçao = new MySqlCommand(sqlCommandRefeiçao, connection);

                    commandPlanoAlimentar.Parameters.Add("@ID", MySqlDbType.Int16);
                    commandPlanoAlimentar.Parameters["@ID"].Value = listaIdPlanos[i];

                    commandPlanoAlimentar.Parameters.Add("@DATA", MySqlDbType.Date);
                    commandPlanoAlimentar.Parameters["@DATA"].Value = now;

                    reader = commandPlanoAlimentar.ExecuteReader();

                    reader.Read();

                    PlanoAlimentar pa = null;

                    if (reader.HasRows)
                    {
                        pa = new PlanoAlimentar(cliente_email, reader.GetString(1), reader.GetString(2),
                                                reader.GetInt16(3), reader.GetDateTime(4), new List <Refeiçao>());

                        commandRefeiçao.Parameters.Add("@ID", MySqlDbType.Int16);
                        commandRefeiçao.Parameters["@ID"].Value = listaIdPlanos[i];

                        reader.Close();

                        reader = commandRefeiçao.ExecuteReader();

                        while (reader.HasRows && reader.Read())
                        {
                            Refeiçao r = new Refeiçao(reader.GetString(1), reader.GetString(2));

                            pa.refeiçoes.Add(r);
                        }

                        reader.Close();
                    }

                    reader.Close();

                    planos.Add(pa);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally
            {
                connection.Close();
            }

            return(planos);
        }