public async Task <IResultModel> Add(ClassAddModel model) { var entity = _mapper.Map <ClassEntity>(model); if (await _repository.Exists(entity)) { return(ResultModel.Failed($"类名称({entity.Name})已存在")); } using (var tran = _repository.BeginTransaction()) { if (await _repository.AddAsync(entity, tran)) { if (entity.BaseEntityType != BaseEntityType.Normal) { var propertyEntities = _baseEntityPropertyCollection.Get(entity.BaseEntityType); propertyEntities.ForEach(m => m.ClassId = entity.Id); //添加基类实体的属性 if (await _propertyRepository.AddAsync(propertyEntities, tran)) { var methodEntity = _mapper.Map <ClassMethodEntity>(model.Method); methodEntity.ClassId = entity.Id; //添加方法 if (await _classMethodRepository.AddAsync(methodEntity, tran)) { tran.Commit(); return(ResultModel.Success()); } } } } } return(ResultModel.Failed()); }
public async Task <IResultModel> Add(ClassAddModel model) { var entity = _mapper.Map <ClassEntity>(model); if (await _repository.Exists(entity)) { return(ResultModel.Failed($"类名称({entity.Name})已存在")); } _uow.BeginTransaction(); if (await _repository.AddAsync(entity)) { if (entity.BaseEntityType != BaseEntityType.Normal) { var propertyEntities = _baseEntityPropertyCollection.Get(entity.BaseEntityType); propertyEntities.ForEach(m => m.ClassId = entity.Id); if (await _propertyRepository.AddAsync(propertyEntities)) { _uow.Commit(); return(ResultModel.Success()); } } } _uow.Rollback(); return(ResultModel.Failed()); }
public async Task <IActionResult> Post([FromBody] ClassDTO dto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Class c = new Class { Name = dto.Name, MaxGroupSize = dto.MaxGroupSize, AutoEnrollment = dto.AutoEnrollment, SemesterId = dto.SemesterId, CourseId = dto.CourseId, }; if (await _classesRepo.AddAsync(c)) { return(CreatedAtRoute( Routes.ClassEntry, new { Id = c.Id }, _classesRep.Entity(c))); } throw new Exception("Unable to add Class"); }
public async Task <MainResponse> CreateUpdateClass(AddClassRequest addClassRequest, string actionBy) { if (addClassRequest.ClassId == 0) { var classNumber = _classRepository.GetSingle(x => x.ClassNumber == addClassRequest.ClassNumber && x.IsActive == true && x.IsDeleted == false); if (classNumber != null && classNumber.ClassId > 0) { _mainResponse.Message = Constants.CLASS_NUMBER_EXIST; _mainResponse.Success = false; return(_mainResponse); } var classExist = _classRepository.GetSingle(x => x.Name == addClassRequest.Name && x.AgeGroup == addClassRequest.AgeGroup && x.IsActive == true && x.IsDeleted == false); if (classExist != null && classExist.ClassId > 0) { _mainResponse.Message = Constants.CLASS_EXIST; _mainResponse.Success = false; return(_mainResponse); } var classes = new Classes { ClassNumber = addClassRequest.ClassNumber, ClassHeaderId = addClassRequest.ClassHeaderId, Name = addClassRequest.Name, Location = addClassRequest.Location, AgeGroup = addClassRequest.AgeGroup, IsActive = true, CreatedBy = actionBy, CreatedDate = DateTime.Now }; var _class = await _classRepository.AddAsync(classes); var schedule = new ScheduleDates { ClassId = _class.ClassId, Date = addClassRequest.ScheduleDate, Time = addClassRequest.ScheduleTime, IsActive = true, CreatedBy = actionBy, CreatedDate = DateTime.Now, }; await _scheduleDateRepository.AddAsync(schedule); if (addClassRequest.getClassSplit != null) { foreach (var split in addClassRequest.getClassSplit) { var classSplit = new ClassSplits { ClassId = _class.ClassId, SplitNumber = addClassRequest.SplitNumber, ChampionShipIndicator = addClassRequest.ChampionShipIndicator, Entries = split.Entries, IsActive = true, CreatedBy = actionBy, CreatedDate = DateTime.Now, }; await _splitClassRepository.AddAsync(classSplit); } } _mainResponse.Message = Constants.CLASS_CREATED; _mainResponse.Success = true; _mainResponse.NewId = _class.ClassId; return(_mainResponse); } else { var checkNumber = _classRepository.GetSingle(x => x.ClassId == addClassRequest.ClassId && x.ClassNumber == addClassRequest.ClassNumber && x.IsActive == true && x.IsDeleted == false); if (checkNumber == null) { var classNumber = _classRepository.GetSingle(x => x.ClassNumber == addClassRequest.ClassNumber && x.IsActive == true && x.IsDeleted == false); if (classNumber != null && classNumber.ClassId > 0) { _mainResponse.Message = Constants.CLASS_NUMBER_EXIST; _mainResponse.Success = false; return(_mainResponse); } } var checkName = _classRepository.GetSingle(x => x.Name == addClassRequest.Name && x.AgeGroup == addClassRequest.AgeGroup && x.ClassId == addClassRequest.ClassId && x.IsActive == true && x.IsDeleted == false); if (checkName == null) { var classExist = _classRepository.GetSingle(x => x.Name == addClassRequest.Name && x.AgeGroup == addClassRequest.AgeGroup && x.IsActive == true && x.IsDeleted == false); if (classExist != null && classExist.ClassId > 0) { _mainResponse.Message = Constants.CLASS_EXIST; _mainResponse.Success = false; return(_mainResponse); } } var updateClass = _classRepository.GetSingle(x => x.ClassId == addClassRequest.ClassId && x.IsActive == true && x.IsDeleted == false); if (updateClass != null) { updateClass.ClassNumber = addClassRequest.ClassNumber; updateClass.ClassHeaderId = addClassRequest.ClassHeaderId; updateClass.Name = addClassRequest.Name; updateClass.Location = addClassRequest.Location; updateClass.AgeGroup = addClassRequest.AgeGroup; updateClass.ModifiedBy = actionBy; updateClass.ModifiedDate = DateTime.Now; await _classRepository.UpdateAsync(updateClass); } var updateClassSchedule = _scheduleDateRepository.GetSingle(x => x.ClassId == addClassRequest.ClassId && x.IsActive == true && x.IsDeleted == false); if (updateClassSchedule != null) { updateClassSchedule.Date = addClassRequest.ScheduleDate; updateClassSchedule.Time = addClassRequest.ScheduleTime; updateClassSchedule.ModifiedBy = actionBy; updateClassSchedule.ModifiedDate = DateTime.Now; await _scheduleDateRepository.UpdateAsync(updateClassSchedule); } if (addClassRequest.getClassSplit != null) { _splitClassRepository.DeleteSplitsByClassId(addClassRequest); foreach (var split in addClassRequest.getClassSplit) { var classSplit = new ClassSplits { ClassId = addClassRequest.ClassId, SplitNumber = addClassRequest.SplitNumber, ChampionShipIndicator = addClassRequest.ChampionShipIndicator, Entries = split.Entries, IsActive = true, CreatedBy = actionBy, CreatedDate = DateTime.Now }; await _splitClassRepository.AddAsync(classSplit); } ; } _mainResponse.Message = Constants.CLASS_UPDATED; _mainResponse.Success = true; _mainResponse.NewId = addClassRequest.ClassId; return(_mainResponse); } }