Example #1
0
        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());
        }
Example #2
0
        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());
        }
Example #3
0
        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);
            }
        }