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); }
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)); } }