/* constructor and initialization */
        public ConversionViewModel(Window window, Models.User user)
        {
            _window      = window;
            _currentUser = user;

            _metrics = new ObservableCollection <string>()
            {
                "Celsius",
                "Fahrenheit",
                "Kelvin"
            };

            _currentConversion = new Models.Conversion();
            _conversions       = new List <Models.Conversion>();

            MakeConversionCommand = new RelayCommand(
                o => _isValid_currentConversion,
                o => MakeConversion()
                );

            StartCommand = new RelayCommand(
                o => true,
                o => Start()
                );

            ResultCommand = new RelayCommand(
                o => true,
                o => Result()
                );

            QuitCommand = new RelayCommand(
                o => true,
                o => Quit()
                );
        }
        /* constructor and initialization */
        public ConversionViewModel(Window window, Models.User user)
        {
            _window      = window;
            _currentUser = user;

            _metrics = new ObservableCollection <string>(Models.Metric.GetMetrics()); // From Database

            _currentConversion = new Models.Conversion();

            MakeConversionCommand = new RelayCommand(
                o => _isValid_currentConversion,
                o => MakeConversion()
                );

            StartCommand = new RelayCommand(
                o => true,
                o => Start()
                );

            ResultCommand = new RelayCommand(
                o => true,
                o => Result()
                );

            QuitCommand = new RelayCommand(
                o => true,
                o => Quit()
                );
        }
        public async Task <IActionResult> ConversionAsync([FromBody] Models.Conversion conversion)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid data"));
            }

            var result = conversion.Sens == 0 ? Calculs.Calculs.ConvertFToC(conversion.Valeur) : Calculs.Calculs.ConvertCToF(conversion.Valeur);

            await _service.SendCreate(conversion);

            return(Accepted(result));
        }
        public async Task SendCreate(Models.Conversion conversion)
        {
            using var client = new HttpClient(new HttpClientHandler {
                ServerCertificateCustomValidationCallback = (message, cert, chain, sslPolicyErrors) => true
            });

            var uri  = new Uri(_settings.ConnectionString);
            var json = JsonConvert.SerializeObject(conversion);

            var request = new HttpRequestMessage {
                RequestUri = uri,
                Method     = HttpMethod.Post,
                Content    = new StringContent(json, Encoding.UTF8, "application/json")
            };

            await client.SendAsync(request);
        }
        private void MakeConversion()
        {
            switch (_currentConversion.InitialMetric)
            {
            case "Celsius":
                switch (_currentConversion.FinalMetric)
                {
                case "Fahrenheit":
                    FinalValue = $"{((_currentConversion.InitialValue * (9f / 5f)) + 32):0.00}";
                    break;

                case "Kelvin":
                    FinalValue = $"{((_currentConversion.InitialValue + 273.15f) + 32):0.00}";
                    break;

                default:
                    FinalValue = $"{(_currentConversion.InitialValue):0.00}";
                    break;
                }
                break;

            case "Fahrenheit":
                switch (_currentConversion.FinalMetric)
                {
                case "Celsius":
                    FinalValue = $"{((_currentConversion.InitialValue - 32) * (5f / 9f)):0.00}";
                    break;

                case "Kelvin":
                    FinalValue = $"{(((_currentConversion.InitialValue - 32) * (5f / 9f)) + 273.15f):0.00}";
                    break;

                default:
                    FinalValue = $"{(_currentConversion.InitialValue):0.00}";
                    break;
                }
                break;

            case "Kelvin":
                switch (_currentConversion.FinalMetric)
                {
                case "Celsius":
                    FinalValue = $"{(_currentConversion.InitialValue - 273.15f):0.00}";
                    break;

                case "Fahrenheit":
                    FinalValue = $"{(((_currentConversion.InitialValue - 273.15f) * (9f / 5f)) + 32):0.00}";
                    break;

                default:
                    FinalValue = $"{(_currentConversion.InitialValue):0.00}";
                    break;
                }
                break;

            default:
                break;
            }

            Models.Conversion conversion = new Models.Conversion()
            {
                InitialMetric = _currentConversion.InitialMetric,
                InitialValue  = _currentConversion.InitialValue,
                FinalMetric   = _currentConversion.FinalMetric,
                FinalValue    = _currentConversion.FinalValue,
            };

            Models.Conversion.AddConversion(conversion, _currentUser); // To Database
        }