using System;
using System.Data.SqlClient;
using SvetoforVKBot.Models.Updates;
using VkNet;
using VkNet.Enums.SafetyEnums;
using VkNet.Model.Keyboard;
using VkNet.Model.RequestParams;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Newtonsoft.Json;
using System.Linq;

namespace SvetoforVKBot.Models.Commands.LK.Tracks
{
    public class SelectRationCommand : Command
    {
        public override string Name => "{\"button\":\"selectRation-";

        public override void Execute(RootObject update, VkApi client, SvetoforVKBot.Data.SvetoforVKBotEntities db)
        {
        }

        public override void ExecutePL(RootObject update, VkApi client, SvetoforVKBot.Data.SvetoforVKBotEntities db)
        {
            var chatId = update.@object.message.from_id;
            MessagesSendParams @params = new MessagesSendParams();
            Regex regex = new Regex("[^0-9]");
            string msg = "";
            var keyboardBuilder = new KeyboardBuilder().Clear();
            int age = 0;
            int genderCoef = 0;
            double kkalResult = 0;
            double colorPercent = 0;
            double dayCoef = 0;
            double curDayKkal = 0;
            try
            {
                string[] payload = update.@object.message.payload.Split('-');
                int track = Convert.ToInt32(regex.Replace(payload[1], ""));

                Dictionary<int, string> colors = new Dictionary<int, string>(3);
                colors.Add(1, "🟩"); //З
                colors.Add(2, "🟦"); //C
                colors.Add(3, "🟨"); //Ж

                Dictionary<int, string> tracks = new Dictionary<int, string>(7);
                tracks.Add(1, "Оптимизация питания");
                tracks.Add(2, "Снижение жировой массы");
                tracks.Add(3, "Увеличение мышечной массы");
                tracks.Add(4, "Персональный режим");

                var user = db.Users.Single(usr => usr.chatId == chatId);

                switch (track)
                {
                    case 1:
                        @params.Message =
                            "Необходимо свести к минимуму в рационе питания:" +
                            "\n" +
                            "• жирное мясо;\n" +
                            "• майонез, сливочные соусы;\n" +
                            "• консервы и соления;\n" +
                            "• копчености;\n" +
                            "• фастфуд;\n" +
                            "• белый хлеб и выпечку;\n" +
                            "• кондитерские изделия;\n" +
                            "• пакетированные соки;\n" +
                            "• газированную воду;\n" +
                            "• лакомства из пакетов (чипсы, снеки, сухарики с добавками). " +
                            "\n\n" +
                            "Как можно чаще на столе должны быть:" +
                            "\n" +
                            "• свежие фрукты и овощи,\n" +
                            "• молочные продукты,\n" +
                            "• цельнозерновой хлеб,\n" +
                            "• белое мясо,\n" +
                            "• рыба и морепродукты,\n" +
                            "• каши,\n" +
                            "• свежевыжатые соки,\n" +
                            "• орехи и семечки, \n" +
                            "• сухофрукты,\n" +
                            "• яйца,\n" +
                            "• твердый сыр,\n" +
                            "• растительные масла (оливковое, льняное и т.д.)" +
                            "\n\n" +
                            "Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";

                        break;

                    case 2:
                        @params.Message =
                            "Необходимо свести к минимуму в рационе питания:" +
                            "\n" +
                            "• жирное мясо;\n" +
                            "• майонез, сливочные соусы;\n" +
                            "• консервы и соления;\n" +
                            "• копчености;\n" +
                            "• фастфуд;\n" +
                            "• белый хлеб и выпечку;\n" +
                            "• кондитерские изделия;\n" +
                            "• пакетированные соки;\n" +
                            "• газированную воду;\n" +
                            "• лакомства из пакетов (чипсы, снеки, сухарики с добавками). " +
                            "\n\n" +
                            "Как можно чаще на столе должны быть:" +
                            "\n" +
                            "• свежие фрукты и овощи,\n" +
                            "• молочные продукты,\n" +
                            "• цельнозерновой хлеб,\n" +
                            "• белое мясо,\n" +
                            "• рыба и морепродукты,\n" +
                            "• каши,\n" +
                            "• свежевыжатые соки,\n" +
                            "• орехи и семечки, \n" +
                            "• сухофрукты,\n" +
                            "• яйца,\n" +
                            "• твердый сыр,\n" +
                            "• растительные масла (оливковое, льняное и т.д.)" +
                            "\n\n" +
                            "Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";

                        break;

                    case 3:
                        @params.Message =
                            "Необходимо свести к минимуму в рационе питания:" +
                            "\n" +
                            "• жирное мясо;\n" +
                            "• майонез, сливочные соусы;\n" +
                            "• консервы и соления;\n" +
                            "• копчености;\n" +
                            "• фастфуд;\n" +
                            "• белый хлеб и выпечку;\n" +
                            "• кондитерские изделия;\n" +
                            "• пакетированные соки;\n" +
                            "• газированную воду;\n" +
                            "• лакомства из пакетов (чипсы, снеки, сухарики с добавками). " +
                            "\n\n" +
                            "Как можно чаще на столе должны быть:" +
                            "\n" +
                            "• свежие фрукты и овощи,\n" +
                            "• молочные продукты,\n" +
                            "• цельнозерновой хлеб,\n" +
                            "• белое мясо,\n" +
                            "• рыба и морепродукты,\n" +
                            "• каши,\n" +
                            "• свежевыжатые соки,\n" +
                            "• орехи и семечки, \n" +
                            "• сухофрукты,\n" +
                            "• яйца,\n" +
                            "• твердый сыр,\n" +
                            "• растительные масла (оливковое, льняное и т.д.)" +
                            "\n\n" +
                            "Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";

                        break;
                }

                if (track != 4 && user.track == 0)
                {
                    keyboardBuilder
                        .AddButton(colors[track] + "Выбрать этот трек", "selectChooseTrack-" + track, KeyboardButtonColor.Positive)
                        .AddLine()
                        .AddButton("Примерное меню", "selectExampleMenu-" + track, KeyboardButtonColor.Primary)
                        .AddLine()
                        .AddButton("Персональный режим", "selectTrack-4", KeyboardButtonColor.Primary)
                        .AddLine()
                        .AddButton("Назад", "selectTrack-" + track, KeyboardButtonColor.Default);
                }
                else if (track != 0 && user.track != 0)
                {
                    keyboardBuilder
                        //.AddButton("Рацион питания", "selectRation-" + track, KeyboardButtonColor.Primary)
                        .AddButton("Примерное меню", "selectExampleMenu-" + track, KeyboardButtonColor.Primary)
                        .AddLine()
                        .AddButton("Персональный режим", "selectTrack-4", KeyboardButtonColor.Primary)
                        .AddLine()
                        .AddButton("Назад", "startPL", KeyboardButtonColor.Default);
                }
                @params.Keyboard = keyboardBuilder.Build();
                @params.UserId = chatId;
                @params.RandomId = GetRandomId();
                client.Messages.SendAsync(@params);
            }
            catch (Exception ee)
            {
                @params.Message = "‼Ошибка в SelectRationCommand: " + ee.Message;
                @params.Attachments = null;
                @params.Keyboard = null;
                @params.UserId = 59111081;
                @params.RandomId = GetRandomId();
                client.Messages.SendAsync(@params);
            }
        }
    }
}