public IPersonModel Update(IPersonModel model) { // Validate model BusinessWorkflowBase.ValidateRequiredNullableID(model.Id); //BusinessWorkflowBase.ValidateRequiredString(model.Name, nameof(model.Name)); // Find existing entity // ReSharper disable once PossibleInvalidOperationException var existingEntity = PeopleRepository.Get(model.Id.Value); // Check if we would be applying identical information, if we are, just return the original // ReSharper disable once SuspiciousTypeConversion.Global if (PersonMapper.AreEqual(model, existingEntity)) { return(PersonMapper.MapToModel(existingEntity)); } // Map model to an existing entity PersonMapper.MapToEntity(model, ref existingEntity); existingEntity.UpdatedDate = BusinessWorkflowBase.GenDateTime; // Update it PeopleRepository.Update(PersonMapper.MapToEntity(model)); // Try to Save Changes PeopleRepository.SaveChanges(); // Return the new value return(Get(existingEntity.Id)); }
public void Verify_MapToEntity_AssignsPersonProperties() { // Arrange var mapper = new PersonMapper(); var model = PeopleMockingSetup.DoMockingSetupForPersonModel(); // Act var entity = mapper.MapToEntity(model.Object); // Assert Assert.Equal(model.Object.Hometown, entity.Hometown); Assert.Equal(model.Object.Country, entity.Country); Assert.Equal(model.Object.Email, entity.Email); Assert.Equal(model.Object.Website, entity.Website); Assert.Equal(model.Object.BirthDate, entity.BirthDate); Assert.Equal(model.Object.DeathDate, entity.DeathDate); // Related Objects Assert.Equal(model.Object.PrimaryImageFileId, entity.PrimaryImageFileId); Assert.Equal(model.Object.GenderId, entity.GenderId); // Associated Objects //Assert.Equal(model.Object.CharactersCreated?.Count, entity.CharactersCreated?.Count); model.VerifyGet(x => x.CharactersCreated, Times.Once); //Assert.Equal(model.Object.PersonAliases?.Count, entity.PersonAliases?.Count); model.VerifyGet(x => x.PersonAliases, Times.Once); //Assert.Equal(model.Object.IssuesWritten?.Count, entity.IssuesWritten?.Count); model.VerifyGet(x => x.IssuesWritten, Times.Once); //Assert.Equal(model.Object.MoviesProduced?.Count, entity.MoviesProduced?.Count); model.VerifyGet(x => x.MoviesProduced, Times.Once); //Assert.Equal(model.Object.MoviesWritten?.Count, entity.MoviesWritten?.Count); model.VerifyGet(x => x.MoviesWritten, Times.Once); //Assert.Equal(model.Object.PromosWritten?.Count, entity.PromosWritten?.Count); model.VerifyGet(x => x.PromosWritten, Times.Once); //Assert.Equal(model.Object.StoryArcsWritten?.Count, entity.StoryArcsWritten?.Count); model.VerifyGet(x => x.StoryArcsWritten, Times.Once); //Assert.Equal(model.Object.VolumesWritten?.Count, entity.VolumesWritten?.Count); model.VerifyGet(x => x.VolumesWritten, Times.Once); }
public IPersonModel Create(IPersonModel model) { // Validate model BusinessWorkflowBase.ValidateIDIsNull(model.Id); //BusinessWorkflowBase.ValidateRequiredString(model.Name, nameof(model.Name)); // Search for an Existing Record (Don't allow Duplicates var results = Search(PersonMapper.MapToSearchModel(model)); if (results.Any()) { return(results.First()); } // Return the first that matches // Map model to a new entity var newEntity = PersonMapper.MapToEntity(model); newEntity.CreatedDate = BusinessWorkflowBase.GenDateTime; newEntity.UpdatedDate = null; newEntity.Active = true; // Add it PeopleRepository.Add(newEntity); // Try to Save Changes PeopleRepository.SaveChanges(); // Return the new value return(Get(newEntity.Id)); }
public PersonDetailModel Insert(PersonDetailModel item) { using (var context = new MyPhotoDbContext()) { var entity = _mapper.MapToEntity(item); entity.Id = Guid.NewGuid(); context.Persons.Add(entity); context.SaveChanges(); return(_mapper.MapToDetail(entity)); } }
public void Verify_MapToEntity_WithExistingEntity_AssignsPersonProperties() { // Arrange var mapper = new PersonMapper(); var model = PeopleMockingSetup.DoMockingSetupForPersonModel(); // Act IPerson existingEntity = new Person { Id = 1 }; mapper.MapToEntity(model.Object, ref existingEntity); // Assert Assert.Equal(model.Object.Hometown, existingEntity.Hometown); Assert.Equal(model.Object.Country, existingEntity.Country); Assert.Equal(model.Object.Email, existingEntity.Email); Assert.Equal(model.Object.Website, existingEntity.Website); Assert.Equal(model.Object.BirthDate, existingEntity.BirthDate); Assert.Equal(model.Object.DeathDate, existingEntity.DeathDate); // Related Objects Assert.Equal(model.Object.PrimaryImageFileId, existingEntity.PrimaryImageFileId); Assert.Equal(model.Object.GenderId, existingEntity.GenderId); // Associated Objects model.VerifyGet(x => x.CharactersCreated, Times.Once); //Assert.Equal(model.Object.CharactersCreated?.Count, existingEntity.CharactersCreated?.Count); model.VerifyGet(x => x.PersonAliases, Times.Once); //Assert.Equal(model.Object.PersonAliases?.Count, existingEntity.PersonAliases?.Count); model.VerifyGet(x => x.IssuesWritten, Times.Once); //Assert.Equal(model.Object.IssuesWritten?.Count, existingEntity.IssuesWritten?.Count); model.VerifyGet(x => x.MoviesProduced, Times.Once); //Assert.Equal(model.Object.MoviesProduced?.Count, existingEntity.MoviesProduced?.Count); model.VerifyGet(x => x.MoviesWritten, Times.Once); //Assert.Equal(model.Object.MoviesWritten?.Count, existingEntity.MoviesWritten?.Count); model.VerifyGet(x => x.PromosWritten, Times.Once); //Assert.Equal(model.Object.PromosWritten?.Count, existingEntity.PromosWritten?.Count); model.VerifyGet(x => x.StoryArcsWritten, Times.Once); //Assert.Equal(model.Object.StoryArcsWritten?.Count, existingEntity.StoryArcsWritten?.Count); model.VerifyGet(x => x.VolumesWritten, Times.Once); //Assert.Equal(model.Object.VolumesWritten?.Count, existingEntity.VolumesWritten?.Count); }