/*Följande metod raderar en cykel ur "generella" cykeltabellen SAMT den korrekta subtabellen m.h.a. ramnummret * som kommer ifrån en användare.*/ public void RemoveBicycleFromDatabase(string frame_number) { using (var context = new bicycle_rental2DBEntities()) { Bicycle removeBicycle = context.Bicycles.FirstOrDefault(c => c.frame_number == frame_number); context.Bicycles.Remove(removeBicycle); if (removeBicycle.bicycle_type == "Vanlig cykel") { Regular_bicycle removeRegular = context.Regular_bicycle.FirstOrDefault(b => b.frame_number == frame_number); context.Regular_bicycle.Remove(removeRegular); context.SaveChanges(); } else if (removeBicycle.bicycle_type == "Elcykel") { Electric_bicycle removeElectric = context.Electric_bicycle.FirstOrDefault(b => b.frame_number == frame_number); context.Electric_bicycle.Remove(removeElectric); context.SaveChanges(); } else if (removeBicycle.bicycle_type == "Enhjuling") { Unicycle removeUnicycle = context.Unicycles.FirstOrDefault(b => b.frame_number == frame_number); context.Unicycles.Remove(removeUnicycle); context.SaveChanges(); } } }
/*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 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(); } } }