public async Task Add(ProjectTypeDto projectTypeDto)
        {
            try
            {
                var mapper = new MapperConfiguration(cfg => cfg.CreateMap <ProjectTypeDto, ProjectType>())
                             .CreateMapper();
                var projectType = mapper.Map <ProjectTypeDto, ProjectType>(projectTypeDto);

                _unitOfWork.Repository <ProjectType>().Add(projectType);
                await _unitOfWork.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                ex.Data[nameof(ProjectType)] = projectTypeDto;
                throw new Exception($"Cannot add new {nameof(ProjectType)}.", ex);
            }
        }
        public async Task Update(ProjectTypeDto projectTypeDto)
        {
            try
            {
                var mapper = new MapperConfiguration(cfg => cfg.CreateMap <ProjectTypeDto, ProjectType>())
                             .CreateMapper();
                var projectType = mapper.Map <ProjectTypeDto, ProjectType>(projectTypeDto);

                _unitOfWork.Repository <ProjectType>().Update(projectType);
                await _unitOfWork.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new Exception(
                          $"Cannot update the {nameof(ProjectType)} with {nameof(projectTypeDto.Id)}: {projectTypeDto.Id}.",
                          ex);
            }
        }
        public void Update(ProjectTypeDto input)
        {
            _userService.CheckUserPermissions(new List <Enum.RoleType> {
                Enum.RoleType.Administrator
            });
            var currentUser = _userService.UserClaim();
            var type        = _projectTypeRepository.FirstOrDefault(t => t.Id == input.Id && t.IsDeleted == false);

            if (type == null)
            {
                throw new Exception("项目类型不存在");
            }
            type.Instructions          = input.Instructions;
            type.UploadFileDescription = input.UploadFileDescription;
            type.UpdateTime            = Clock.Now;
            type.UpdateUserId          = currentUser.UserId;
            _projectTypeRepository.UpdateAsync(type);
        }
示例#4
0
        private static void ConfigureProjectDefaults(Project project, ProjectTypeDto projectType)
        {
            var initialFieldId = -1000;

            ProjectField CreateField(string name, ProjectFieldType type)
            {
                var field = new ProjectField()
                {
                    CanPlayerEdit     = false,
                    CanPlayerView     = true,
                    FieldBoundTo      = FieldBoundTo.Character,
                    FieldName         = name,
                    FieldType         = type,
                    IsActive          = true,
                    IsPublic          = true,
                    MandatoryStatus   = MandatoryStatus.Optional,
                    IncludeInPrint    = false,
                    ValidForNpc       = true,
                    ProjectFieldId    = initialFieldId,
                    Description       = new MarkdownString(""),
                    MasterDescription = new MarkdownString(""),
                };

                project.ProjectFields.Add(field);
                initialFieldId++;
                return(field);
            }

            switch (projectType)
            {
            case ProjectTypeDto.Larp:
                project.Details.CharacterNameField = CreateField("Имя персонажа", ProjectFieldType.String);
                project.Details.CharacterNameField.MandatoryStatus = MandatoryStatus.Required;

                project.Details.CharacterDescription = CreateField("Описание персонажа", ProjectFieldType.Text);
                break;

            case ProjectTypeDto.Convention:
                project.Details.AutoAcceptClaims     = true;
                project.Details.EnableAccommodation  = true;
                project.Details.CharacterNameField   = null;
                project.Details.CharacterDescription = null;
                break;

            case ProjectTypeDto.ConventionProgram:
                project.Details.EnableManyCharacters = true;

                project.Details.ScheduleEnabled = true;

                project.Details.CharacterNameField = CreateField("Название мероприятия", ProjectFieldType.String);
                project.Details.CharacterNameField.MandatoryStatus = MandatoryStatus.Required;
                project.Details.CharacterNameField.CanPlayerEdit   = true;

                project.Details.CharacterDescription = CreateField("Описание мероприятия", ProjectFieldType.Text);
                project.Details.CharacterDescription.CanPlayerEdit = true;

                var timeField = CreateField("Время проведения мероприятия", ProjectFieldType.ScheduleTimeSlotField);
                timeField.MasterDescription = new MarkdownString("Здесь вы можете указать, когда проводится мероприятие. Настройте в свойствах поля возможное время проведения");

                var roomField = CreateField("Место проведения мероприятия", ProjectFieldType.ScheduleRoomField);
                roomField.MasterDescription = new MarkdownString("Здесь вы можете указать, где проводится мероприятие. Настройте в свойствах поля возможное время проведения");

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(projectType));
            }
        }