public static Data.Drive MapActive(Drive drive) { if (drive == null) { return(null); } if (drive.IsPast()) { throw new ArgumentOutOfRangeException("drive", "Drive should be archived."); } var d = new Data.Drive { DestinationId = drive.Dest.Id, DriverId = drive.Driver.DriverId, Dtime = drive.Time }; if (drive.IsPickup) { d.Dtype = "Pickup"; } else { d.Dtype = "Join"; } if (drive.Id > -1) { d.Id = drive.Id; } return(d); }
public void TestDataDrivePickup() { Data.Drive drive = new Data.Drive() { Dtype = "Pickup", Driver = new Data.Driver() { Id = 0, MeetLoc = "Garage", Seats = 4, UserId = 1, Rating = 0, User = new Data.Usr { UserName = "******", EmailAddress = "*****@*****.**", Pass = "******", Company = "Revature" } }, Destination = new Data.Destination() { Title = "Taco Bell", StreetAddress = "101 Street" }, Dtime = DateTime.Now }; var expected = Mapper.Map(drive); Assert.NotNull(expected); }
public static Drive Map(Data.Drive drive) { if (drive == null) { return(null); } if (drive.Dtype == "Pickup")//Pickup { var d = new PickupDrive(Map(drive.Driver), Map(drive.Destination), drive.Dtime.Value, drive.Id); foreach (Data.UserPickup pickup in drive.UserPickup)//adds users and items { User u = Map(pickup.User); d.AddUser(u); foreach (Data.OrderItem item in pickup.OrderItem) { d.AddItem(u, Map(item)); } } return(d); } else//Join { var d = new JoinDrive(Map(drive.Driver), Map(drive.Destination), drive.Dtime.Value, drive.Id); foreach (Data.UserJoin join in drive.UserJoin)//adds users { d.AddUser(Map(join.User)); } return(d); } }
/// <summary> /// Archives the drive with given and its sub values. Removes itself and all subvalues /// </summary> /// <param name="id"></param> /// <returns></returns> private async Task ArchiveDrive(int id) //order: arch drive, arch orders, arch items, remove items, remove orders, remove drive { //arch drive Data.Drive drive = await bbBContext.Drive .Where(d => d.Id == id).AsNoTracking().FirstAsync(); bbBContext.ArchiveDrive.Add(new ArchiveDrive() { DestinationId = drive.DestinationId, DriverId = drive.DriverId, Dtime = drive.Dtime, Dtype = drive.Dtype }); await(bbBContext.SaveChangesAsync()); int archiveId = (await bbBContext.ArchiveDrive .Where(d => (d.Dtime == drive.Dtime && d.DriverId == drive.DriverId)) .AsNoTracking().FirstAsync()).Id; if (drive.Dtype == "Join") { //arch orders var joins = await bbBContext.UserJoin.Where(j => j.DriveId == drive.Id).AsNoTracking().ToListAsync(); foreach (UserJoin j in joins) { bbBContext.ArchiveUserJoin.Add( new ArchiveUserJoin() { ArchiveDriveId = archiveId, UserId = j.UserId }); } //remove orders bbBContext.UserJoin.RemoveRange(joins); await bbBContext.SaveChangesAsync(); } else { var pickups = await bbBContext.UserPickup.Include(p => p.OrderItem) .Where(j => j.DriveId == drive.Id).AsNoTracking().ToListAsync(); foreach (UserPickup p in pickups) { //arch order bbBContext.ArchiveOrder.Add(new ArchiveOrder() { ArchiveDriveId = archiveId, UserId = p.UserId }); await bbBContext.SaveChangesAsync(); int orderId = (await bbBContext.ArchiveOrder .Where(o => o.ArchiveDriveId == archiveId && o.UserId == p.UserId) .AsNoTracking().FirstAsync()).Id; foreach (Data.OrderItem i in p.OrderItem) { //arch items bbBContext.ArchiveItem.Add(new ArchiveItem() { ArchiveOrderId = orderId, Cost = i.Item.Cost, ItemName = i.Item.ItemName, Msg = i.Msg, Quantity = i.Quantity }); } //remove items bbBContext.OrderItem.RemoveRange(p.OrderItem); } //remove orders bbBContext.UserPickup.RemoveRange(pickups); await bbBContext.SaveChangesAsync(); } //Remove drive bbBContext.Drive.Remove(drive); await bbBContext.SaveChangesAsync(); }