public SubjectVM CreateOrUpdate(SubjectForCreateOrUpdateDTO subjectForCreateOrUpdateDTO) { if (subjectForCreateOrUpdateDTO == null) { throw new ArgumentNullException($"DTO of type is null"); } var subjectEntity = _mapper.Map <Subject>(subjectForCreateOrUpdateDTO); if (subjectForCreateOrUpdateDTO.Id == null || subjectForCreateOrUpdateDTO.Id == 0) { _dbContext.Subjects.Add(subjectEntity); } else { _dbContext.Subjects.Update(subjectEntity); } try { if (_dbContext.SaveChanges() < 1) { return(null); } } catch (Exception ex) { return(null); } var subjectVM = _mapper.Map <SubjectVM>(subjectEntity); return(subjectVM); }
public IActionResult CreateOrUpdateSubject(SubjectForCreateOrUpdateDTO subjectForCreateOrUpdateDTO) { if (ModelState.IsValid) { if (_subjectService.CreateOrUpdate(subjectForCreateOrUpdateDTO) != null) { return(RedirectToAction("Index")); } return(View("Error", new ErrorViewModel() { Description = _localizer["This subject already exists"] })); //already exists with this name } return(View("CreateOrUpdateSubject")); }
public void WhenIdIsNullShouldModelBeNullAndViewShouldNotBeError() { Mock <ISubjectService> _subjectServiceMock = new Mock <ISubjectService>(); _subjectServiceMock.Setup(s => s.GetSubject(It.IsAny <Expression <Func <Subject, bool> > >())).Returns(() => null); SubjectController _subjectController = new SubjectController(_subjectServiceMock.Object, _teacherServiceMock.Object, null, _mapperMock.Object, _localizerMock.Object, _loggerFactoryMock.Object); int?id = null; SubjectForCreateOrUpdateDTO expectedModel = null; var result = (ViewResult)_subjectController.CreateOrUpdateSubject(id); Assert.Equal(expectedModel, result.Model); Assert.NotEqual("Error", result.ViewName); }
public CreateOrUpdateSubjectTests() { _correctSubjectVM = new SubjectVM() { Id = 1, Name = "Name", Description = "Description" }; _correctSubjectDTO = new SubjectForCreateOrUpdateDTO() { Id = 1, Name = "Name", Description = "Description", TeacherId = 4 }; _alreadyExistsErrorDescription = "This subject already exists!"; _loggerFactoryMock = new Mock <ILoggerFactory>(); _teacherServiceMock = new Mock <ITeacherService>(); _teacherServiceMock.Setup(ts => ts.GetTeachers(null)).Returns(() => ListOfTeachersVMs()); _mapperMock = new Mock <IMapper>(); _mapperMock.Setup(m => m.Map <SubjectForCreateOrUpdateDTO>(_correctSubjectVM)).Returns(() => _correctSubjectDTO); _localizerMock = new Mock <IStringLocalizer <SubjectController> >(); _localizerMock.Setup(l => l["This subject already exists"]).Returns(() => new LocalizedString("This subject already exists", _alreadyExistsErrorDescription)); }