/*Följande metod redigerar en existerande cykels pris i databasen. Användaren har blivit tillfrågad efter * ramnummer och det nya priset, som sedan matas in i denna metod. Metoden letar upp korrekt cykel i den * "generella" cykeltabellen m.h.a. ramnummret och korrigerar dess pris innan en SaveChange genomförs.*/ /*TODO: * * Får ej transaction.Commit och transaction.Rollback att fungera som önskat. WORK IN PROGRESS. * Målet är att försöka få en form utav felhantering som sedan kan implementeras på fler metoder där input * behöver säkerställas. * * ARBETE PÅGÅR.*/ public void EditBicycleToDatabase(string frame_number, int price) { using (var context = new bicycle_rental2DBEntities()) { using (var transaction = context.Database.BeginTransaction()) { try { Bicycle editBicycle = context.Bicycles.FirstOrDefault(b => b.frame_number == frame_number); editBicycle.price = price; context.SaveChanges(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); Console.WriteLine("Error occured."); Console.ReadKey(); } } } }
/*Följande metod tar emot ett ramnummer som användaren har fyllt i m.h.a. en annan metod, söker upp matchande cykel i * den "generella" cykeltabellen för att sedan presentera ALL data på just den cykeln. * * Denna metoden borde nog egentligen inte ha printat informationen, utan bara hämtat objekt/objektinformationen och * skickat vidare den till en mer relevant metod. Åtgärdas i mån av tid. TODO.*/ public void DisplaySpecificBicycle(string frame_number) { Console.Clear(); using (var context = new bicycle_rental2DBEntities()) { Bicycle bicycle = context.Bicycles.FirstOrDefault(b => b.frame_number == frame_number); Console.WriteLine("DISPLAYING BICYCLE: " + bicycle.make + " " + bicycle.model); Console.WriteLine("\n\nBicycle type: " + bicycle.bicycle_type); Console.WriteLine("Bicycle category: " + bicycle.bicycle_category); Console.WriteLine("Recommended user: "******"Color: " + bicycle.color); Console.WriteLine("Frame size: " + bicycle.frame_size); Console.WriteLine("Wheel size: " + bicycle.wheel_size); Console.WriteLine("Gears: " + bicycle.gears); Console.WriteLine("Brakes back: " + bicycle.brake_back); Console.WriteLine("Brakes front: " + bicycle.brake_front); Console.WriteLine("Price: " + bicycle.price); /*Hämtar extra information om cykeln som visas är en elcykel. Info hämtas m.h.a. ramnummer och finnes i * subtabellen över elcyklar.*/ if (bicycle.bicycle_type == "Elcykel") { Console.WriteLine("\nBATTERY INFORMATION:"); Electric_bicycle displayElectric = context.Electric_bicycle.FirstOrDefault(b => b.frame_number == frame_number); Console.WriteLine("\nBattery capacity: " + displayElectric.battery_capacity + " Wh."); Console.WriteLine("Average charge time: " + displayElectric.battery_avg_charge_time + " hours."); Console.WriteLine("Average distance per full charge: " + displayElectric.battery_avg_distance + " km."); Console.WriteLine("Motor power: " + displayElectric.motor_power + " W."); } Console.WriteLine("\n\n\n\nPress a key to return to the main menu."); Console.ReadKey(); } }
/*Följande metod tar emot indata (som kommer ifrån en användare och en annan metod) och ger den till ett nytt cykelobjekt.*/ public void AddBicycleToDatabase(string frame_number, string type, string category, string user, string make, string model, string color, string frame_size, string wheel_size, byte gears, string brake_back, string brake_front, int price) { using (var context = new bicycle_rental2DBEntities()) { Bicycle newBicycle = new Bicycle { frame_number = frame_number, bicycle_type = type, bicycle_category = category, recommended_user = user, make = make, model = model, color = color, frame_size = frame_size, wheel_size = wheel_size, gears = gears, brake_back = brake_back, brake_front = brake_front, price = price }; context.Bicycles.Add(newBicycle); /*Följande if-sats kollar vilken cykeltyp som ska läggas till och uppdaterar korrekt subtabell för cyklar. * Tillgängliga subtabeller för cyklar är vanliga cyklar, elcyklar, och enhjulingar. * Om det är en elcykel som läggs till kommer några extraprompts relaterat till batteriet på elcykeln. * När cykeln placeras i en korrekt subtabell så utförs en SaveChange.*/ if (type == "Vanlig cykel") { context.Regular_bicycle.Add(new Regular_bicycle { frame_number = frame_number }); context.SaveChanges(); } else if (type == "Elcykel") { Console.WriteLine("Enter the battery capacity (in Wh)."); string UserInputBatteryCapacity = Console.ReadLine(); Console.WriteLine("Enter the average charge time (in hours)."); string UserInputAvgChrgTime = Console.ReadLine(); Console.WriteLine("Enter the average distance (in km)."); string UserInputAvgDistance = Console.ReadLine(); Console.WriteLine("Enter the motor power (in W)."); string UserInputPower = Console.ReadLine(); context.Electric_bicycle.Add(new Electric_bicycle { frame_number = frame_number, battery_capacity = UserInputBatteryCapacity, battery_avg_charge_time = UserInputAvgChrgTime, battery_avg_distance = UserInputAvgDistance, motor_power = UserInputPower }); context.SaveChanges(); } else if (type == "Enhjuling") { context.Unicycles.Add(new Unicycle { frame_number = frame_number }); context.SaveChanges(); } } }