Beispiel #1
0
        public static Ship CreateElement()
        {
            int  classofShip = random.Next(1, 4);
            Ship ship        = new Ship();

            switch (classofShip)
            {
            case 1:
            {
                ship = new SteamBoat(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                break;
            }

            case 2:
            {
                ship = new SailBoat(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                break;
            }

            case 3:
            {
                ship = new Corvette(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                break;
            }
            }
            return(ship);
        }
Beispiel #2
0
        public static Stack GenStackShipCollection(int size)
        {
            Stack shipStack = new Stack();

            for (int i = 0; i < size; i++)
            {
                int classofShip = random.Next(1, 4);
                switch (classofShip)
                {
                case 1:
                {
                    SteamBoat ship = new SteamBoat(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                    shipStack.Push(ship);
                    break;
                }

                case 2:
                {
                    SailBoat ship = new SailBoat(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                    shipStack.Push(ship);
                    break;
                }

                case 3:
                {
                    Corvette ship = new Corvette(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                    shipStack.Push(ship);
                    break;
                }
                }
            }
            return(shipStack);
        }
Beispiel #3
0
        public static List <Ship> GenListShipCollection(int size)
        {
            List <Ship> shipList = new List <Ship>();

            for (int i = 0; i < size; i++)
            {
                int classofShip = random.Next(1, 4);
                switch (classofShip)
                {
                case 1:
                {
                    SteamBoat ship = new SteamBoat(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                    shipList.Add(ship);
                    break;
                }

                case 2:
                {
                    SailBoat ship = new SailBoat(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                    shipList.Add(ship);
                    break;
                }

                case 3:
                {
                    Corvette ship = new Corvette(ShipName[random.Next(0, ShipName.Length)] + ShipNamePostfix[random.Next(0, ShipNamePostfix.Length)], random.Next(1950, 2020), random.Next(50, 140), random.Next(10, 100), PortName[random.Next(0, PortName.Length)], random.Next(800, 1600));
                    shipList.Add(ship);
                    break;
                }
                }
            }
            return(shipList);
        }
        public string CreateSailBoat(string model, int weight, int sailEfficiency)
        {
            IBoat boat = new SailBoat(model, weight, sailEfficiency);

            this.Database.Boats.Add(boat);
            return(string.Format("Sail boat with model {0} registered successfully.", model));
        }
        public string CreateSailBoat(string model, int weight, int sailEfficiency)
        {
            IBoat boat = new SailBoat(model, weight, sailEfficiency);

            this.Database.Boats.Add(boat);

            return(string.Format(Constants.SuccessfullCreateBoat, "Sail boat", model));
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            const char   DELIM      = ',';
            const string IFILE_NAME = "Customer.txt";
            const string OFILE_NAME = "Boat.txt";



            const int NUM_CUSTOMER = 3;

            Customer[] myCustomers = new Customer[NUM_CUSTOMER];

            FileStream iFile = editFile(IFILE_NAME, FileMode.Open, FileAccess.Read);

            StreamReader reader = checkFileStreamReader(iFile, IFILE_NAME);

            addCustomers(reader, myCustomers, DELIM);


            closeFile(iFile, reader);


            MotorBoat motorboat1 = createMotorboat("9005", 10, "Yamaha Inc", 2012, 2, FuelType.Diesel);


            MotorBoat motorboat2 = createMotorboat("7654", 25, "Bayliner Inc.", 2016, 3, FuelType.Gasoline);


            SailBoat sailboat1 = createSailboat("5142", 15, "Miami Inc.", 1999, 6, 3);



            assignBoat(myCustomers[0], motorboat1);

            assignBoat(myCustomers[1], motorboat2);

            assignBoat(myCustomers[0], sailboat1);

            division(1);
            Console.WriteLine(myCustomers[0]);

            division(2);
            Console.WriteLine(myCustomers[1]);


            FileStream oFile = editFile(OFILE_NAME, FileMode.Create, FileAccess.Write);


            StreamWriter writer = checkFileStreamWriter(oFile, OFILE_NAME);


            printRecords(writer, myCustomers, DELIM);
        }
Beispiel #7
0
        private static void MakeMeABoatBuilderPattern()
        {
            IBoatMotor bm = new SailBoatMotor();
            IBoatColor bc = new SailBoatColor("Blue", false);
            IBoatBody  bb = new SailBoatBody();

            AbstractSailBoat boat     = new SailBoat(bm, bc, bb);
            BoatBuilder      builder  = new SailBoatBuilder(boat);
            BoatDirector     director = new SailBoatDirector();
            IBoat            b        = director.Build(builder);

            Console.WriteLine(b.ToString());
        }
Beispiel #8
0
        public static void Main()
        {
            // Build a collection of all vehicles that fly
            var airplane   = new Boeing747(200, 250, VehicleColor.Green);
            var helecopter = new Helecoptor(150, 4, VehicleColor.Black);

            List <Aircraft> aircrafts = new List <Aircraft>();

            aircrafts.Add(airplane);
            aircrafts.Add(helecopter);


            // With a single `foreach`, have each vehicle Fly()
            foreach (var aircraft in aircrafts)
            {
                aircraft.Fly(1000);
            }

            // Build a collection of all vehicles that operate on roads
            var ford  = new FordFiesta(12, 5, VehicleColor.Red);
            var jetta = new VWJetta(20, 5, VehicleColor.White);

            List <Car> cars = new List <Car>();

            cars.Add(ford);
            cars.Add(jetta);

            // With a single `foreach`, have each road vehicle Drive()
            foreach (var car in cars)
            {
                car.Drive(50);
            }

            // Build a collection of all vehicles that operate on water
            var skidoo  = new Skidoo(10, 1, VehicleColor.Blue);
            var skipper = new SailBoat(0, 5, VehicleColor.Orange);

            List <Watercraft> watercrafts = new List <Watercraft>();

            watercrafts.Add(skidoo);
            watercrafts.Add(skipper);

            // With a single `foreach`, have each water vehicle Drive()
            foreach (var watercraft in watercrafts)
            {
                watercraft.Drive(5);
            }

            Console.ReadKey();
        }
Beispiel #9
0
        public void CheckWinningsTest()
        {
            RaceCourse  rc     = new RaceCourse();
            Boat        sb     = new SailBoat(1, "sloop", "diesel", 30, true);
            List <Boat> rBoats = BoatRace.Program.CreateTheBoats("SpeedBoat", 4);
            Gambler     player = new Gambler();

            player.Winnings = 500;
            player.Wager    = 500;
            //OddsToWin moved to Boat Class after testing
            sb.OddsToWin = 2;
            BoatRace.Program.CheckWinnings(rBoats, rc, 3, player);
            Assert.IsTrue(player.Winnings == 1000);
        }
Beispiel #10
0
        public void StartRace_FinishRace_ShouldRemoveCurrentRaceAfterFinish()
        {
            var first  = new RowBoat("rowboat1", 80, 4);
            var second = new RowBoat("rowboat2", 90, 4);
            var third  = new SailBoat("sailboat1", 200, 98);

            this.controller.OpenRace(1000, 10, 5, false);
            this.controller.CurrentRace.AddParticipant(first);
            this.controller.CurrentRace.AddParticipant(second);
            this.controller.CurrentRace.AddParticipant(third);

            this.controller.StartRace();

            Assert.IsNull(this.controller.CurrentRace);
        }
Beispiel #11
0
        static void Main(string[] args)
        {
            var roadster = new Corvette();

            roadster.Driving("corvette");

            var imOnnaBoat = new SailBoat();

            imOnnaBoat.Driving("sailboat");

            var flyBoy = new LockheedSR_71Blackbird();

            flyBoy.Flying();

            Console.ReadKey();
        }
    public static void Main()
    {
        // Build a collection of all vehicles that fly
        CessiPoo cesiOneKenobi = new CessiPoo();
        Cessna   plainCesna    = new Cessna();

        List <IFly> flyList = new List <IFly>()
        {
            cesiOneKenobi, plainCesna
        };

        // With a single `foreach`, have each vehicle Fly()

        foreach (IFly item in flyList)
        {
            item.Fly();
        }

        // Build a collection of all vehicles that operate on roads
        Motorcycle CrotchRocket    = new Motorcycle();
        Moped      SomeKindOfMoped = new Moped();

        // With a single `foreach`, have each road vehicle Drive()
        List <ILand> landList = new List <ILand>()
        {
            CrotchRocket, SomeKindOfMoped
        };

        foreach (ILand item in landList)
        {
            item.Drive();
        }
        // Build a collection of all vehicles that operate on water
        JetSki   imAwesome       = new JetSki();
        SailBoat superSailorMoon = new SailBoat();

        List <IWater> waterList = new List <IWater>()
        {
            imAwesome, superSailorMoon
        };

        // With a single `foreach`, have each water vehicle Drive()
        foreach (IWater item in waterList)
        {
            item.Drive();
        }
    }
Beispiel #13
0
        static SailBoat createSailboat(string regNumber, double length, string manufacturer, int year, int numSails, int numMasts)
        {
            SailBoat aSailboat = null;
            string   exception;

            try
            {
                aSailboat = new SailBoat(regNumber, length, manufacturer, year, numSails, numMasts);
            }
            catch (Exception ex)
            {
                exception  = printError(ex);
                exception += string.Format("A sailboat instace couldn't be created!\n");
                Console.WriteLine(exception);
            }
            return(aSailboat);
        }
        public void OpenRace_GetParticipants_ShouldReturnCorrectParticipants()
        {
            var first  = new SailBoat("model1", 100, 45);
            var second = new SailBoat("model2", 100, 45);
            var third  = new SailBoat("model3", 100, 45);

            var expected = new List <IBoat> {
                first, second, third
            };

            this.controller.OpenRace(500, 2, 1, false);
            this.controller.CurrentRace.AddParticipant(first);
            this.controller.CurrentRace.AddParticipant(second);
            this.controller.CurrentRace.AddParticipant(third);

            var actual = this.controller.CurrentRace.GetParticipants().ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
Beispiel #15
0
        static Boat CreateBoat()
        {
            string boatId;
            int    weight, maxSpeed, uniqueProperty;

            switch (random.Next(1, 4 + 1))
            {
            case 1:
                uniqueProperty = random.Next(1, 6 + 1);
                boatId         = CreateBoatId("R-");
                weight         = random.Next(100, 300 + 1);
                maxSpeed       = random.Next(0, 3 + 1);
                Boat rowBoat = new RowBoat(uniqueProperty, boatId, weight, maxSpeed);
                return(rowBoat);

            case 2:
                uniqueProperty = random.Next(10, 1000 + 1);
                boatId         = CreateBoatId("M-");
                weight         = random.Next(200, 3000 + 1);
                maxSpeed       = random.Next(0, 60 + 1);
                Boat motorBoat = new MotorBoat(uniqueProperty, boatId, weight, maxSpeed);
                return(motorBoat);

            case 3:
                uniqueProperty = random.Next(10, 60 + 1);
                boatId         = CreateBoatId("S-");
                weight         = random.Next(800, 6000 + 1);
                maxSpeed       = random.Next(0, 12 + 1);
                Boat sailBoat = new SailBoat(uniqueProperty, boatId, weight, maxSpeed);
                return(sailBoat);

            case 4:
                uniqueProperty = random.Next(0, 500 + 1);
                boatId         = CreateBoatId("C-");
                weight         = random.Next(3000, 20000 + 1);
                maxSpeed       = random.Next(0, 20 + 1);
                Boat cargoBoat = new CargoBoat(uniqueProperty, boatId, weight, maxSpeed);
                return(cargoBoat);

            default:
                return(null);
            }
        }
Beispiel #16
0
        public void StartRace_BoatWithNegativeTime_ShouldNotFinish()
        {
            var first  = new RowBoat("rowboat1", 80, 4);
            var second = new RowBoat("rowboat2", 90, 4);
            var third  = new SailBoat("sailboat1", 200, 98);

            this.controller.OpenRace(1000, 10, 5, false);
            this.controller.CurrentRace.AddParticipant(first);
            this.controller.CurrentRace.AddParticipant(second);
            this.controller.CurrentRace.AddParticipant(third);

            var distance   = this.controller.CurrentRace.Distance;
            var firstTime  = distance / first.CalculateRaceSpeed(this.controller.CurrentRace);
            var secondTime = distance / second.CalculateRaceSpeed(this.controller.CurrentRace);
            var thirdTime  = distance / third.CalculateRaceSpeed(this.controller.CurrentRace);

            if (thirdTime <= 0)
            {
                thirdTime = double.PositiveInfinity;
            }

            var expected = new StringBuilder();

            expected.AppendLine(string.Format(
                                    "First place: RowBoat Model: rowboat1 Time: {0} sec",
                                    firstTime.ToString("0.00")));
            expected.AppendLine(string.Format(
                                    "Second place: RowBoat Model: rowboat2 Time: {0} sec",
                                    secondTime.ToString("0.00")));
            expected.Append("Third place: SailBoat Model: sailboat1 Time: ");
            expected.Append(double.IsInfinity(thirdTime) ? "Did not finish!" : thirdTime.ToString("0.00"));

            var actual = this.controller.StartRace();

            Assert.AreEqual(expected.ToString(), actual);
        }
        public string CreateSailBoat(string model, int weight, int sailEfficiency)
        {
            IBoat boat = new SailBoat(model, weight, sailEfficiency);
            this.Database.Boats.Add(boat);

            return string.Format("Sail boat with model {0} registered successfully.", model);
        }
Beispiel #18
0
        public void HorsepowerTest()
        {
            SailBoat sb = new SailBoat(1, "sloop", "diesel", 30, true);

            Assert.IsTrue(sb.Horsepower(sb.GetType().Name) <= 30);
        }
        public async Task <IHttpActionResult> mockData(int counter)
        {
            string[] Names     = { "Maggie", "Penny", "Magdalena", "Joanna", "Zuzanna", "Tomasz", "Marcin", "Jacek", "Mateusz", "Aleksander", "Jurek", "Abby", "Laila", "Sadie", "Olivia", "Ola", "Starlight", "Talla", "Zbigniew", "Jola" };
            string[] Surenames = { "Poloczek", "Nowak", "Cudzoziemiec", "Kwiatek", "K³y¿", "Ziêba", "Miodek", "Halama", "Nehru", "Boczek", "O³ówek", "Niestolik" };
            string[] City      = { "Sarnów", "Gorzów Wielkopolski", "Warszawa", "Kraków", "Katowice", "Gdañsk", "S³upsk", "Przemyœl", "Bielsko Bia³a", "¯ywiec", "Szczecin", "Poznañ" };
            string[] Email     = { "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**" };
            string[] Phones    = { "129483958", "837495837", "098273475", "283950392", "898127847", "988372982", "783917284" };
            try
            {
                for (int i = 0; i < counter; i++)
                {
                    int rand = new Random().Next(1, 6);
                    DomainModel.Advert advert = new DomainModel.Advert();
                    advert.AdditionDate          = DateTime.Now;
                    advert.AdditionalInformation = "Brak informacji dodatkowych na temat og³oszenia";
                    advert.City        = City[new Random().Next(0, 11)];
                    advert.Email       = Email[new Random().Next(0, 4)];
                    advert.FinishDate  = DateTime.Now.AddDays(7);
                    advert.Name        = Names[new Random().Next(0, 20)];
                    advert.PhoneNumber = Phones[new Random().Next(0, 6)];
                    advert.SureName    = Surenames[new Random().Next(1, 12)];
                    switch (rand)
                    {
                    case 1:
                        DomainModel.Engine subject = new DomainModel.Engine();
                        subject.Advert            = advert;
                        subject.AdvertDescription = "Sprzedam silnki u¿ywany, dwusuwowy.";
                        subject.AdvertName        = "Silnik mercury";
                        subject.Brand             = "Mercury";
                        subject.BuiltYear         = new Random().Next(1970, 2018).ToString();
                        subject.CategoryId        = 3;
                        subject.Power             = new Random().Next(1, 1000);
                        subject.Price             = new Random().Next(2000, 400000);
                        subject.TypeOfEngine      = DomainModel.Engine.EngineType.Outboard;
                        subject.TypeOfFuel        = DomainModel.Engine.FuelType.Gasoline;
                        DomainModel.Image uploadedImg = new DomainModel.Image();
                        int length = new Random().Next(1000, 99999);
                        uploadedImg.ImageData  = new byte[length];
                        uploadedImg.Name       = "silnikMercury";
                        uploadedImg.Identifier = Guid.NewGuid();
                        uploadedImg.Subject    = subject;
                        _db.images.Add(uploadedImg);
                        _db.SaveChanges();
                        break;

                    case 2:
                        DomainModel.Trailor subjectTrailor = new DomainModel.Trailor();
                        subjectTrailor.Advert            = advert;
                        subjectTrailor.AdvertDescription = "Sprzedam przyczepe u¿ywan¹ typu laweta.";
                        subjectTrailor.AdvertName        = "Przyczepa laweta";
                        subjectTrailor.Brand             = "Branderup";
                        subjectTrailor.BuiltYear         = new Random().Next(1970, 2018).ToString();
                        subjectTrailor.CategoryId        = 4;
                        subjectTrailor.Capcity           = new Random().Next(100, 40000);
                        subjectTrailor.Price             = new Random().Next(1500, 20000);
                        subjectTrailor.Length            = new Random().Next(4, 10);
                        subjectTrailor.Weight            = new Random().Next(100, 1000);
                        subjectTrailor.Width             = new Random().Next(1, 3);
                        DomainModel.Image uploadedImgTrailor = new DomainModel.Image();
                        int lengthTrailorImage = new Random().Next(1000, 99999);
                        uploadedImgTrailor.ImageData  = new byte[lengthTrailorImage];
                        uploadedImgTrailor.Name       = "Przyczepa";
                        uploadedImgTrailor.Identifier = Guid.NewGuid();
                        uploadedImgTrailor.Subject    = subjectTrailor;
                        _db.images.Add(uploadedImgTrailor);
                        _db.SaveChanges();
                        break;

                    case 3:
                        Boat     subjectBoat = new Boat();
                        SailBoat sailboat    = new SailBoat();
                        subjectBoat.AdvertDescription = "Sprzedam ¿aglówke, pierwszy w³aœciciel, jednomasztowa";
                        subjectBoat.AdvertName        = "Venuska";
                        subjectBoat.Price             = new Random().Next(1000, 99999);
                        subjectBoat.Advert            = advert;
                        sailboat.EnginePower          = new Random().Next(10, 888);
                        sailboat.EngineType           = 1;
                        sailboat.HullType             = "Kilowa";
                        sailboat.IsEngine             = true;
                        sailboat.RudderType           = "Rumpel";
                        sailboat.SailsArea            = new Random().Next(5, 40);
                        sailboat.YachtType            = "kilowy";
                        sailboat.Boat          = subjectBoat;
                        subjectBoat.CategoryId = 1;
                        subjectBoat.SailBoat   = sailboat;
                        DomainModel.Image uploadedImgSailboat = new DomainModel.Image();
                        int lengthSailboatImage = new Random().Next(1000, 99999);
                        uploadedImgSailboat.ImageData  = new byte[lengthSailboatImage];
                        uploadedImgSailboat.Name       = "£ódŸ ¿aglowa";
                        uploadedImgSailboat.Identifier = Guid.NewGuid();
                        uploadedImgSailboat.Subject    = subjectBoat;
                        _db.images.Add(uploadedImgSailboat);
                        _db.SaveChanges();
                        break;

                    case 4:
                        Boat      subjectMotorBoat = new Boat();
                        MotorBoat motorboat        = new MotorBoat();
                        subjectMotorBoat.AdvertDescription = "Sprzedam ¿aglówke, pierwszy w³aœciciel, jednomasztowa";
                        subjectMotorBoat.AdvertName        = "Venuska";
                        subjectMotorBoat.Price             = new Random().Next(1000, 99999);
                        subjectMotorBoat.Advert            = advert;
                        motorboat.EnginePower       = new Random().Next(10, 888);
                        motorboat.MotorboatType     = 1;
                        motorboat.Boat              = subjectMotorBoat;
                        subjectMotorBoat.CategoryId = 2;
                        subjectMotorBoat.MotorBoat  = motorboat;
                        DomainModel.Image uploadedImgMotorboat = new DomainModel.Image();
                        int lengthMotorboatImage = new Random().Next(1000, 99999);
                        uploadedImgMotorboat.ImageData  = new byte[lengthMotorboatImage];
                        uploadedImgMotorboat.Name       = "£ódŸ motorowdna";
                        uploadedImgMotorboat.Identifier = Guid.NewGuid();
                        uploadedImgMotorboat.Subject    = subjectMotorBoat;
                        _db.images.Add(uploadedImgMotorboat);
                        _db.SaveChanges();
                        break;

                    case 5:
                        Sail sails = new Sail();
                        sails.Advert            = advert;
                        sails.AdvertDescription = "";
                        sails.AdvertName        = "Sprzedam ¿agiel - u¿ywany";
                        sails.Brand             = "NorthSails";
                        sails.CategoryId        = 5;
                        sails.FootLenght        = new Random().Next(1, 3);
                        sails.LeechLenght       = new Random().Next(1, 6);
                        sails.LuffLenght        = new Random().Next(1, 6);
                        sails.Price             = new Random().Next(100, 1200);
                        sails.SailArea          = new Random().Next(2, 20);
                        DomainModel.Image uploadedImgSails = new DomainModel.Image();
                        int lengthSailsImage = new Random().Next(1000, 99999);
                        uploadedImgSails.ImageData  = new byte[lengthSailsImage];
                        uploadedImgSails.Name       = "¯agiel";
                        uploadedImgSails.Identifier = Guid.NewGuid();
                        uploadedImgSails.Subject    = sails;
                        _db.images.Add(uploadedImgSails);
                        _db.SaveChanges();
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }



            return(Ok());
        }
        public async Task <IHttpActionResult> UploadImage()
        {
            if (HttpContext.Current.Request.Files.AllKeys.Any())
            {
                string             subjectId   = HttpContext.Current.Request.Form[0];
                string             jsonSubject = HttpContext.Current.Request.Form[1];
                string             jsonAdvert  = HttpContext.Current.Request.Form[2];
                string             jsonProduct = HttpContext.Current.Request.Form[3];
                string             Id          = JsonConvert.DeserializeObject <string>(subjectId);
                var                category    = _db.dicCategories.Where(x => x.Id == Id).FirstOrDefault();
                DomainModel.Advert advert      = new DomainModel.Advert();
                advert = JsonConvert.DeserializeObject <DomainModel.Advert>(jsonAdvert);
                advert.AdditionDate = DateTime.Now;

                dynamic subject = null;
                try
                {
                    switch (category.CategoryId)
                    {
                    case 1:
                        subject = new Boat();
                        SailBoat sailboat = new SailBoat();
                        var      boat     = JsonConvert.DeserializeObject <Boat>(jsonSubject);
                        subject = JsonConvert.DeserializeObject <Boat>(jsonProduct);
                        subject.AdvertDescription = boat.AdvertDescription;
                        subject.AdvertName        = boat.AdvertName;
                        subject.Price             = boat.Price;
                        subject.Advert            = advert;
                        sailboat           = JsonConvert.DeserializeObject <SailBoat>(jsonProduct);
                        subject.SailBoat   = sailboat;
                        subject.CategoryId = category.CategoryId;
                        _db.boats.Add(subject);
                        break;

                    case 2:
                        subject = new Boat();
                        MotorBoat motorBoat = new MotorBoat();
                        var       mBoat     = JsonConvert.DeserializeObject <Boat>(jsonSubject);
                        subject = JsonConvert.DeserializeObject <Boat>(jsonProduct);
                        subject.AdvertDescription = mBoat.AdvertDescription;
                        subject.AdvertName        = mBoat.AdvertName;
                        subject.Price             = mBoat.Price;
                        subject.Advert            = advert;
                        motorBoat          = JsonConvert.DeserializeObject <MotorBoat>(jsonProduct);
                        subject.MotorBoat  = motorBoat;
                        subject.CategoryId = category.CategoryId;
                        break;

                    case 3:
                        subject = new DomainModel.Engine();
                        ApiContract.Subject enginePar          = JsonConvert.DeserializeObject <ApiContract.Subject>(jsonSubject);
                        ApiContract.Engine  subjectApiContract = JsonConvert.DeserializeObject <ApiContract.Engine>(jsonProduct);
                        _mapper.Map <ApiContract.Subject, DomainModel.Engine>(enginePar, subject);
                        _mapper.Map <ApiContract.Engine, DomainModel.Engine>(subjectApiContract, subject);

                        //subject.Price = subjectJsonPar.Price;
                        //subject.BuiltYear = subjectJsonPar.BuiltYear;
                        //subject.Brand = subjectJsonPar.Brand;
                        //subject.Power = subjectJsonPar.Power;
                        //subject.TypeOfEngine = subjectJsonPar.TypeOfEngine;
                        //subject.TypeOfFuel = subjectJsonPar.TypeOfFuel;
                        //subject = enginePar;
                        //subject.Brand = enginePar.Brand;
                        subject.CategoryId = category.CategoryId;
                        subject.Advert     = advert;

                        break;

                    case 4:
                        subject = new Trailor();
                        var trailorParams = JsonConvert.DeserializeObject <Trailor>(jsonSubject);
                        subject            = JsonConvert.DeserializeObject <Trailor>(jsonProduct);
                        subject.CategoryId = category.CategoryId;
                        subject.Advert     = advert;
                        break;

                    case 5:
                        subject = new Sail();
                        var sailParams = JsonConvert.DeserializeObject <Sail>(jsonSubject);
                        subject            = JsonConvert.DeserializeObject <Sail>(jsonProduct);
                        subject.CategoryId = category.CategoryId;
                        subject.Advert     = advert;
                        break;

                    case 6:
                        subject = new Accesory();
                        var accessoryParams = JsonConvert.DeserializeObject <Accesory>(jsonSubject);
                        subject            = JsonConvert.DeserializeObject <Accesory>(jsonProduct);
                        subject.CategoryId = category.CategoryId;
                        subject.Advert     = advert;
                        break;
                    }
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.Message));
                }
                try
                {
                    foreach (string fileName in HttpContext.Current.Request.Files)
                    {
                        var httpPostedFile = HttpContext.Current.Request.Files[fileName];

                        if (httpPostedFile != null)
                        {
                            DomainModel.Image uploadedImg = new DomainModel.Image();
                            int length = httpPostedFile.ContentLength;
                            uploadedImg.ImageData = new byte[length];
                            httpPostedFile.InputStream.Read(uploadedImg.ImageData, 0, length);
                            uploadedImg.Name       = Path.GetFileName(httpPostedFile.FileName);
                            uploadedImg.Identifier = Guid.NewGuid();
                            uploadedImg.Subject    = subject;
                            _db.images.Add(uploadedImg);
                            var fileSavePath = Path.Combine(HttpContext.Current.Server.MapPath("~/AdvertImages"), httpPostedFile.FileName);
                            httpPostedFile.SaveAs(fileSavePath);
                        }
                    }
                    _db.SaveChanges();

                    return(Ok());
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.Message));
                }
            }
            return(Ok());
        }