public static async Task Change(this SubscriptionVehicle subscriptionVehicle, ApplicationDbContext db) { var oldSubscriptionVehicle = await db.SubscriptionVehicles.FirstOrDefaultAsync( sp => sp.VehicleId.Equals(subscriptionVehicle.OldVehicleId) && sp.SubscriptionId.Equals(subscriptionVehicle.OldSubscriptionId)); var newSubscriptionVehicle = await db.SubscriptionVehicles.FirstOrDefaultAsync( sp => sp.VehicleId.Equals(subscriptionVehicle.VehicleId) && sp.SubscriptionId.Equals(subscriptionVehicle.SubscriptionId)); if (oldSubscriptionVehicle != null && newSubscriptionVehicle == null) { newSubscriptionVehicle = new SubscriptionVehicle { SubscriptionId = subscriptionVehicle.SubscriptionId, VehicleId = subscriptionVehicle.VehicleId }; using (var transaction = new TransactionScope( TransactionScopeAsyncFlowOption.Enabled)) { try { db.SubscriptionVehicles.Remove(oldSubscriptionVehicle); db.SubscriptionVehicles.Add(newSubscriptionVehicle); await db.SaveChangesAsync(); transaction.Complete(); } catch { transaction.Dispose(); } } } }
public async Task <ActionResult> DeleteConfirmed( int subscriptionId, int vehicleId) { SubscriptionVehicle subscriptionVehicle = await GetSubscriptionVehicle(subscriptionId, vehicleId); db.SubscriptionVehicles.Remove(subscriptionVehicle); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
public async Task <ActionResult> Create([Bind(Include = "VehicleId,SubscriptionId")] SubscriptionVehicle subscriptionVehicle) { if (ModelState.IsValid) { db.SubscriptionVehicles.Add(subscriptionVehicle); await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(subscriptionVehicle)); }
public static async Task <bool> CanChange( this SubscriptionVehicle subscriptionVehicle, ApplicationDbContext db) { var oldSP = await db.SubscriptionVehicles.CountAsync(sp => sp.VehicleId.Equals(subscriptionVehicle.OldVehicleId) && sp.SubscriptionId.Equals(subscriptionVehicle.OldSubscriptionId)); var newSP = await db.SubscriptionVehicles.CountAsync(sp => sp.VehicleId.Equals(subscriptionVehicle.VehicleId) && sp.SubscriptionId.Equals(subscriptionVehicle.SubscriptionId)); return(oldSP.Equals(1) && newSP.Equals(0)); }
// GET: Admin/SubscriptionVehicle/Details/5 public async Task <ActionResult> Details(int?subscriptionId, int?vehicleId) { if (subscriptionId == null || vehicleId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SubscriptionVehicle subscriptionVehicle = await GetSubscriptionVehicle(subscriptionId, vehicleId); if (subscriptionVehicle == null) { return(HttpNotFound()); } return(View(await subscriptionVehicle.Convert(db))); }
public async Task <ActionResult> Edit([Bind( Include = "VehicleId,SubscriptionId,OldVehicleId,OldSubscriptionId")] SubscriptionVehicle subscriptionVehicle) { if (ModelState.IsValid) { var canChange = await subscriptionVehicle.CanChange(db); if (canChange) { await subscriptionVehicle.Change(db); } return(RedirectToAction("Index")); } return(View(subscriptionVehicle)); }
public static async Task <SubscriptionVehicleModel> Convert( this SubscriptionVehicle subscriptionVehicle, ApplicationDbContext db, bool addListData = true) { var model = new SubscriptionVehicleModel { SubscriptionId = subscriptionVehicle.SubscriptionId, VehicleId = subscriptionVehicle.VehicleId, Subscriptions = addListData ? await db.Subscriptions.ToListAsync() : null, Vehicles = addListData ? await db.Vehicles.ToListAsync() : null, SubscriptionTitle = (await db.Subscriptions.FirstOrDefaultAsync(s => s.Id.Equals(subscriptionVehicle.SubscriptionId))).Title, VehicleTitle = (await db.Vehicles.FirstOrDefaultAsync(v => v.Id.Equals(subscriptionVehicle.VehicleId))).Title }; return(model); }