Ejemplo n.º 1
0
        public async Task <bool> RegisterVehicleAsync(Vehicle vehicle)
        {
            var vehicleDb = GetVehicleFromDbAsync(vehicle);

            bool isRegistered = await parkingLotService.TryToRegisterCar(vehicleDb);

            if (isRegistered)
            {
                Data.PromotionCard newCard = null;
                bool hasChangedCard        = false;
                if (vehicleDb.PromotionCard != null && vehicle.CardType == null)// had a card but now doesn't
                {
                    newCard        = null;
                    hasChangedCard = true;
                }
                else if (vehicleDb.PromotionCard == null && vehicle.CardType != null) // didn't have a card but now has
                {
                    var vehicleCardType = (Data.CardType)Enum.Parse(typeof(Data.CardType), vehicle.CardType);
                    newCard        = promotionCardRepository.FirstOrDefault(x => x.Type == vehicleCardType);
                    hasChangedCard = true;
                }
                else
                {
                    var vehicleCardType = (Data.CardType)Enum.Parse(typeof(Data.CardType), vehicle.CardType);
                    if (vehicleDb.PromotionCard.Type != vehicleCardType) // had a card and now it's changed
                    {
                        newCard        = promotionCardRepository.FirstOrDefault(x => x.Type == vehicleCardType);
                        hasChangedCard = true;
                    }
                }

                if (hasChangedCard)
                {
                    vehicleDb.PromotionCard = newCard;
                    await vehicleRepository.UpdateAsync(vehicleDb);
                }
            }

            return(isRegistered);
        }