public void UpdateDbWorkRequest(DataContext dbContext, DbWorkRequest dbWorkRequest, WorkRequest workRequest) { // Delete users in dbWorkRequest that are not in workRequest var dbUsersWorkRequestsToRemove = dbWorkRequest.DbUserWorkRequests.Where(dbRequest => !workRequest.UsersAssigned.Select(u => u.UserId).Contains(dbRequest.DbUser.DbUserId)).ToList(); foreach (var dbUsersWorkRequestToRemove in dbUsersWorkRequestsToRemove) { dbWorkRequest.DbUserWorkRequests.Remove(dbUsersWorkRequestToRemove); } // Add users in workRequest that are not in dbWorkRequest var usersToAdd = workRequest.UsersAssigned.Where(request => !dbWorkRequest.DbUserWorkRequests.Select(u => u.DbUser.DbUserId).Contains(request.UserId)).ToList(); foreach (var userToAdd in usersToAdd) { var dbUser = new UsersRepository().GetDbUser(dbContext, userToAdd.UserId); if (dbUser != null) { dbWorkRequest.DbUserWorkRequests.Add(new DbUserWorkRequest { DbUserWorkRequestId = Guid.NewGuid(), DbUser = dbUser, DbWorkRequest = dbWorkRequest }); } } dbContext.SaveChanges(); }
public WorkRequest AddWorkRequest(WorkRequest workRequest) { var dbContext = new DataContext(); var dbWorkRequest = new DbWorkRequest(); dbWorkRequest.DbWorkRequestId = workRequest.WorkRequestId; dbWorkRequest.RequestDate = workRequest.RequestDate; dbWorkRequest.RequestNumber = new WorkRequestNumbersRepository().GetNextNumber(); dbWorkRequest.Description = workRequest.Description; dbWorkRequest.DbCreatedByUser = new UsersRepository().GetDbUser(dbContext, workRequest.CreatedByUser.UserId); dbWorkRequest.DbSoftwareType = new SoftwareTypesRepository().GetDbSoftwareType(dbContext, workRequest.SoftwareType.SoftwareTypeId); dbWorkRequest.DbWorkStatus = new WorkStatusRepository().GetDbWorkStatus(dbContext, workRequest.WorkStatus.WorkStatusId); dbWorkRequest.DbWorkType = new WorkTypesRepository().GetDbWorkType(dbContext, workRequest.WorkType.WorkTypeId); dbWorkRequest.DbCustomer = new CustomersRepository().GetDbCustomer(dbContext, workRequest.Customer.CustomerId); dbWorkRequest = dbContext.DbWorkRequests.Add(dbWorkRequest); dbContext.SaveChanges(); dbContext = new DataContext(); dbWorkRequest = GetDbWorkRequest(dbContext, dbWorkRequest.DbWorkRequestId); new UserWorkRequestsRepository().UpdateDbWorkRequest(dbContext, dbWorkRequest, workRequest); return(new WorkRequest(dbWorkRequest)); }
public WorkRequest(DbWorkRequest dbWorkRequest) { WorkRequestId = dbWorkRequest.DbWorkRequestId; RequestNumber = dbWorkRequest.RequestNumber; RequestDate = dbWorkRequest.RequestDate; Description = dbWorkRequest.Description; WorkType = new WorkType(dbWorkRequest.DbWorkType); WorkStatus = new WorkStatus(dbWorkRequest.DbWorkStatus); SoftwareType = new SoftwareType(dbWorkRequest.DbSoftwareType); RequestNumber = dbWorkRequest.RequestNumber; CreatedByUser = new User(dbWorkRequest.DbCreatedByUser); UsersAssigned = dbWorkRequest.DbUserWorkRequests.Select(dbUserWorkRequest => dbUserWorkRequest.DbUser).ToList().Select(dbUser => new User(dbUser)).ToList(); Customer = new Customer(dbWorkRequest.DbCustomer); }