public async Task CreateLock() { Lock lockEntity = GenerateLock(); await _applicationDbContext.Locks.AddAsync(lockEntity); await _applicationDbContext.SaveChangesAsync(); List <User> admins = await _applicationDbContext.Users.Where(x => x.Role == ApplicationRole.Admin).ToListAsync(); List <LockRent> adminRents = new List <LockRent>(); foreach (var admin in admins) { LockRent lockRent = new LockRent { LockId = lockEntity.Id, Lock = lockEntity, RentStart = DateTime.Now, Rights = RentRights.Admin, UserId = admin.Id, User = admin }; adminRents.Add(lockRent); } await _applicationDbContext.LockRents.AddRangeAsync(adminRents); await _applicationDbContext.SaveChangesAsync(); }
public async Task CancelRights(int lockId, int userId) { LockRent rent = await _applicationDbContext.LockRents .FirstOrDefaultAsync(x => x.LockId == lockId && x.UserId == userId && CheckTiming(x)); rent.RentFinish = DateTime.Now; _applicationDbContext.LockRents.Update(rent); await _applicationDbContext.SaveChangesAsync(); }
public async Task ShareRights(ShareRightsViewModel shareRightsViewModel) { var currRent = await GetCurrentRent(shareRightsViewModel.LockId, shareRightsViewModel.OwnerId); if (currRent != null) { return; } LockRent ownerRent = new LockRent { UserId = shareRightsViewModel.OwnerId, LockId = shareRightsViewModel.LockId, Rights = shareRightsViewModel.Rights, RentStart = shareRightsViewModel.From, RentFinish = shareRightsViewModel.To }; await _applicationDbContext.LockRents.AddAsync(ownerRent); await _applicationDbContext.SaveChangesAsync(); }
private bool CheckTiming(LockRent rent) { DateTime dateTimeNow = DateTime.Now; return(rent.RentStart <= dateTimeNow && (!rent.RentFinish.HasValue || rent.RentFinish > dateTimeNow)); }