private void UpdateLentBooks(LibraryDataContext dataContext, DB.Lending currentEntity, Model.Lending modifiedEntity) { DB.Employee currentEmployee = GetCurrentEmployee(dataContext); var newListOfBooks = modifiedEntity.Books.ToList(); foreach (DB.LentBook book in currentEntity.Books.ToList()) { newListOfBooks.RemoveFirst(x => x.Id == book.Id); Model.LentBook newBook = modifiedEntity.Books.FirstOrDefault(x => x.Id == book.Id); if (newBook == null) //removed { currentEntity.Books.Remove(book); dataContext.LentBooks.Remove(book); } else //modified { UpdateSingleLentBook(book, newBook, currentEmployee); } } //add new LentBooks foreach (Model.LentBook book in newListOfBooks) { DB.LentBook toAdd = Mapper.Map <DB.LentBook>(book); toAdd.Lending = currentEntity; toAdd.ReturnEmployee = (book.ReturnDate != null) ? currentEmployee : null; currentEntity.Books.Add(toAdd); } }
private void UpdateSingleLentBook(DB.LentBook dbEntity, Model.LentBook modelEntity, DB.Employee currentEmployee) { dbEntity.EndDate = modelEntity.EndDate; dbEntity.ReturnDate = modelEntity.ReturnDate; if (modelEntity.ReturnDate.HasValue) { if (modelEntity.ReturnEmployeeId != null) { dbEntity.ReturnEmployeeId = modelEntity.ReturnEmployeeId; } else { dbEntity.ReturnEmployee = currentEmployee; } } else { dbEntity.ReturnEmployee = null; } }
public override int Add(Model.Lending entity) { if (entity == null) { throw new ArgumentNullException("entity"); } if (entity.ClientId == 0) { throw new ArgumentNullException("clientId"); } if (entity.Books == null || entity.Books.Count() == 0) { throw new ArgumentNullException("books"); } using (var dataContext = GetDataContext()) { DB.Lending newLending = Mapper.Map <DB.Lending>(entity); newLending.Books = new List <DB.LentBook>(); newLending.LendingEmployeeId = GetCurrentEmployee(dataContext).Id; foreach (var lentBook in entity.Books) { DB.LentBook book = Mapper.Map <DB.LentBook>(lentBook); book.Lending = newLending; book.ReturnEmployeeId = (lentBook.ReturnDate != null) ? new int?(newLending.LendingEmployeeId) : null; newLending.Books.Add(book); } var newRecord = dataContext.Lendings.Add(newLending); dataContext.SaveChanges(); return(newRecord.Id); } }