コード例 #1
0
        /// <summary>
        /// Removing the car from database.
        /// </summary>
        /// <param name="a9">Asphalt9Entities</param>
        /// <param name="carToDelete">Car to delete.</param>
        /// <param name="transaction">Transaction.</param>
        /// <returns></returns>
        private async Task DeleteCarAsync(Asphalt9Entities a9, Grande carToDelete, DbContextTransaction transaction)
        {
            await Task.Run(() =>
            {
                // Removing the entity related to the requested car to delete.
                a9.Grandes.Remove(carToDelete);

                // saving changes.
                a9.SaveChanges();

                // committing the saved changes into the database.
                transaction.Commit();
            });
        }
コード例 #2
0
        /// <summary>
        /// Updating the car asynchronously.
        /// </summary>
        /// <returns></returns>
        private async Task ProcessingUpdateAsync()
        {
            using (var a9 = new Asphalt9Entities())
            {
                using (var transaction = a9.Database.BeginTransaction())
                {
                    try
                    {
                        // Updating the car.
                        await UpdateCarAsync(a9, Car.FullName);


                        // Saving the update.
                        a9.SaveChanges();

                        // committing the saved changes into the database.
                        transaction.Commit();

                        // Saving the input image to app image directory.
                        if (!FileHelpers.IsImageExist(ImageName))
                        {
                            var encoder = new PngBitmapEncoder();

                            encoder.Frames.Add(BitmapFrame.Create(CarImage));

                            var imagePath = FileHelpers.ImagePath(imageName: ImageName);

                            using (var fileStream = new FileStream(imagePath, FileMode.Create))
                            {
                                encoder.Save(fileStream);
                            }
                        }

                        Status = $"{Car.FullName} Has been updated successfully.";
                    }
                    catch
                    {
                        // Rolling back adding the car in case an error occurred.
                        transaction.Rollback();
                        Status = @"Error occurred while updating the car!";
                    }
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Adding the new car asynchronously.
        /// </summary>
        /// <returns></returns>
        private async Task AddCarAsync()
        {
            using (var a9 = new Asphalt9Entities())
            {
                using (var transaction = a9.Database.BeginTransaction())
                {
                    try
                    {
                        // creating new entity with the given car information by the user.
                        var newCar = new Grande
                        {
                            Brand       = Car.CarBrand,
                            CarName     = Car.CarName,
                            CarClass    = Car.CarClass,
                            CarType     = Enum.Parse(typeof(CarType), Car.Type).ToString(),
                            Fuel        = Car.Fuel,
                            CarImage    = string.Concat(Car.CarClass.ToLower(), "_", ImageName),
                            Refill      = Car.Refill,
                            ReleaseDate = Car.ReleaseDate,
                            Stars       = Car.Stars,

                            // every single grande entity has the links with other entities via foreign key created in database.

                            Blueprint = new Entities.Blueprint()
                            {
                                FirstStarBP  = Car.Blueprints.FirstStar,
                                SecondStarBP = Car.Blueprints.SecondStar,
                                ThirdStarBP  = Car.Blueprints.ThirdStar,
                                FourthStarBP = Car.Blueprints.FourthStar,
                                FifthStarBP  = Car.Blueprints.FifthStar,
                                SixthStarBP  = Car.Blueprints.SixthStar,
                                TotalBP      = Car.Blueprints.Total
                            },

                            StockDetail = new StockDetail()
                            {
                                TopSpeed     = Car.Performance.StockTopSpeed,
                                Acceleration = Car.Performance.StockAcceleration,
                                Handling     = Car.Performance.StockHandling,
                                Nitro        = Car.Performance.StockNitro,
                            },

                            MaxDetail = new MaxDetail()
                            {
                                TopSpeed     = Car.Performance.MaxTopSpeed,
                                Acceleration = Car.Performance.MaxAcceleration,
                                Handling     = Car.Performance.MaxHandling,
                                Nitro        = Car.Performance.MaxNitro,
                            },

                            StarRank = new StarRank()
                            {
                                StockStarRank  = Car.Ranks.Stock,
                                FirstStarRank  = Car.Ranks.FirstStar,
                                SecondStarRank = Car.Ranks.SecondStar,
                                ThirdStarRank  = Car.Ranks.ThirdStar,
                                FourthStarRank = Car.Ranks.FourthStar,
                                FifthStarRank  = Car.Ranks.FifthStar,
                                SixthStarRank  = Car.Ranks.SixthStar,
                                Max            = Car.Ranks.Max
                            },

                            Upgrade = new Upgrade()
                            {
                                Stage1  = Car.Upgrades.Stage0,
                                Stage2  = Car.Upgrades.Stage1,
                                Stage3  = Car.Upgrades.Stage2,
                                Stage4  = Car.Upgrades.Stage3,
                                Stage5  = Car.Upgrades.Stage4,
                                Stage6  = Car.Upgrades.Stage5,
                                Stage7  = Car.Upgrades.Stage6,
                                Stage8  = Car.Upgrades.Stage7,
                                Stage9  = Car.Upgrades.Stage8,
                                Stage10 = Car.Upgrades.Stage9,
                                Stage11 = Car.Upgrades.Stage10,
                                Stage12 = Car.Upgrades.Stage11,
                                Stage13 = Car.Upgrades.Stage12,
                                Total   = Car.Upgrades.TotalStagesCost
                            },

                            UncommonPart = new UncommonPart()
                            {
                                Cost      = Car.AdditionalParts.UncommonCost,
                                Quantity  = Car.AdditionalParts.UncommonQuantity,
                                TotalCost = Car.AdditionalParts.UncommonTotalCost
                            },

                            RarePart = new RarePart()
                            {
                                Cost      = Car.AdditionalParts.RareCost,
                                Quantity  = Car.AdditionalParts.RareQuantity,
                                TotalCost = Car.AdditionalParts.RareTotalCost
                            },

                            EpicPart = new EpicPart()
                            {
                                Cost      = Car.AdditionalParts.EpicCost,
                                Quantity  = Car.AdditionalParts.EpicQuantity,
                                TotalCost = Car.AdditionalParts.EpicTotalCost
                            }
                        };

                        // here we check if the current car is new or already exist.
                        if (a9.Grandes
                            .Any(item => string.Concat(item.Brand, " ", item.CarName) ==
                                 string.Concat(newCar.Brand, " ", newCar.CarName)))
                        {
                            Status = "Another car with same name is already exists!";
                            return;
                        }

                        // Adding new Car
                        a9.Grandes.Add(newCar);

                        // saving the addition.
                        a9.SaveChanges();

                        // Committing the addition of the new car into the database.
                        transaction.Commit();

                        // Saving the image into app image directory.
                        await Task.Run(() =>
                        {
                            var encoder = new PngBitmapEncoder();

                            encoder.Frames.Add(item: BitmapFrame.Create(source: CarImage));

                            var imagePath = FileHelpers.ImagePath(imageName: newCar.CarImage);

                            using (var fileStream = new FileStream(path: imagePath, mode: FileMode.Create))
                            {
                                encoder.Save(stream: fileStream);
                            }
                        });

                        // Notifying the state of operation.
                        Status = $"{newCar.Brand} {newCar.CarName} has been added successfully.";
                    }
                    catch
                    {
                        // Rolling back adding the car in case an error occurred.
                        transaction.Rollback();
                        Status = @"Error occurred while adding the car!";
                    }
                }
            }
        }