From b75d8893c60969ffe5b8982745a66776b09181a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Stawujak?= Date: Fri, 14 Dec 2018 20:55:51 +0100 Subject: [PATCH] SKE-53 method createCompetition --- .../CompetitionAppService.cs | 47 +++++++++++++++++++ .../Dto/CompetitionCategoryMapProfile.cs | 2 + .../Dto/CreateCompetitionDto.cs | 24 ++++++++++ 3 files changed, 73 insertions(+) create mode 100644 SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/CompetitionAppService.cs create mode 100644 SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/Dto/CreateCompetitionDto.cs diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/CompetitionAppService.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/CompetitionAppService.cs new file mode 100644 index 0000000..eea9d11 --- /dev/null +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/CompetitionAppService.cs @@ -0,0 +1,47 @@ +using Abp.Authorization; +using Abp.Domain.Repositories; +using Abp.Domain.Uow; +using System.Threading.Tasks; +using SystemKonkursow.Competition.CompetitionCategory.Dto; + +namespace SystemKonkursow.Competition.CompetitionCategory +{ + public class CompetitionAppService : SystemKonkursowAppServiceBase + { + private readonly IRepository _competitionCategoryRepository; + private readonly IRepository _competitionRepository; + + public CompetitionAppService(IRepository competitionCategoryRepository, + IRepository competitionRepository) + { + _competitionCategoryRepository = competitionCategoryRepository; + _competitionRepository = competitionRepository; + } + + [AbpAuthorize] + [UnitOfWork] + public async Task CreateCompetition(CreateCompetitionDto createCompetitionDto) + { + var user = await GetCurrentUserAsync(); + + var mappedCompetition = ObjectMapper.Map(createCompetitionDto); + + mappedCompetition.CreatorUserId = user.Id; + + var newCompetitionId = await _competitionRepository.InsertAndGetIdAsync(mappedCompetition); + + foreach (int categoryId in createCompetitionDto.CategoriesId) + { + var competitionCategory = new Domain.CompetitionCategory + { + CategoryId = categoryId, + CompetitionId = newCompetitionId + }; + + await _competitionCategoryRepository.InsertAsync(competitionCategory); + } + + return newCompetitionId; + } + } +} diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/Dto/CompetitionCategoryMapProfile.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/Dto/CompetitionCategoryMapProfile.cs index ec2de8a..cce62a4 100644 --- a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/Dto/CompetitionCategoryMapProfile.cs +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/Dto/CompetitionCategoryMapProfile.cs @@ -16,6 +16,8 @@ namespace SystemKonkursow.Competition.CompetitionCategory.Dto .ForMember(dest => dest.MaxClass, opt => opt.MapFrom(src => src.Competition.MaxClass)) .ForMember(dest => dest.CreationTime, opt => opt.MapFrom(src => src.Competition.CreationTime)) .ForMember(dest => dest.CreatorName, opt => opt.MapFrom(src => src.Competition.Creator.UserName)); + + CreateMap(); } } } diff --git a/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/Dto/CreateCompetitionDto.cs b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/Dto/CreateCompetitionDto.cs new file mode 100644 index 0000000..9b952ae --- /dev/null +++ b/SystemKonkursow/4.2.1/aspnet-core/src/SystemKonkursow.Application/Competition/CompetitionCategory/Dto/CreateCompetitionDto.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +namespace SystemKonkursow.Competition.CompetitionCategory.Dto +{ + public class CreateCompetitionDto + { + public string Name { get; set; } + + public DateTime StartDate { get; set; } + + public DateTime EndDate { get; set; } + + public string Description { get; set; } + + public string Prize { get; set; } + + public int MinClass { get; set; } + + public int MaxClass { get; set; } + + public List CategoriesId { get; set; } + } +}