Пример #1
0
        static async Task <string> GetToken(string email, string password)
        {
            TeslaOwner owner       = new TeslaOwner(email);
            var        AccessToken = await owner.AuthenticateAsync(password);

            return(AccessToken);
        }
Пример #2
0
        public async Task <ActionResult> RegisterVehicle([FromBody] TeslaVehicleDTO vehicleReceived)
        {
            try
            {
                var owner    = new TeslaOwner(vehicleReceived.OwnerEmail, vehicleReceived.AccessToken);
                var vehicles = await owner.GetVehiclesAsync();

                var vehicleFound = vehicles.Where(v => v.VIN == vehicleReceived.VIN).FirstOrDefault();
                if (vehicleFound == null)
                {
                    var msg = $"User {vehicleReceived.OwnerEmail} does not own vehicle {vehicleReceived.VIN}";
                    _logger.LogWarning(msg);
                    return(StatusCode(StatusCodes.Status403Forbidden, msg));
                }

                await _teslaRepository.UpdateTeslaVehicle(
                    new TeslaVehicleMongo()
                {
                    OwnerEmail          = vehicleReceived.OwnerEmail,
                    AccessToken         = vehicleReceived.AccessToken,
                    Id                  = vehicleFound.Id,
                    VIN                 = vehicleFound.VIN,
                    DisplayName         = vehicleFound.DisplayName,
                    ChargingConstraints = vehicleReceived.ChargingConstraints.ConvertAll(cc =>
                                                                                         new ChargingConstraintMongo()
                    {
                        WeekDays          = Array.ConvertAll(cc.WeekDays, ds => Enum.Parse <DayOfWeek>(ds)),
                        Date              = cc.Date,
                        ByHour            = cc.ByHour,
                        NoEarlierThanHour = cc.NoEarlierThanHour,
                        TimeZone          = cc.TimeZone,
                        MinCharge         = cc.MinCharge,
                        MaxCharge         = cc.MaxCharge
                    }
                                                                                         )
                }
                    );

                _logger.LogInformation($"Registered vehicle {vehicleFound.VIN}");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
            return(Ok());
        }