diff options
| author | Danail Dimitrov <danaildimitrov321@gmail.com> | 2021-02-18 22:58:36 +0200 |
|---|---|---|
| committer | Danail Dimitrov <danaildimitrov321@gmail.com> | 2021-02-18 22:58:36 +0200 |
| commit | 1ff5502483c5ee8bab1ef0a70f61e18f6ba2399d (patch) | |
| tree | 1d0be161dd38aead8e62aa1aac069b5f3f89f730 /src/Web | |
| parent | 02cf7a097c781cd0ef9e844078e873fcda5a3fcd (diff) | |
| download | DevHive-1ff5502483c5ee8bab1ef0a70f61e18f6ba2399d.tar DevHive-1ff5502483c5ee8bab1ef0a70f61e18f6ba2399d.tar.gz DevHive-1ff5502483c5ee8bab1ef0a70f61e18f6ba2399d.zip | |
initial implementation of message layer
Diffstat (limited to 'src/Web')
6 files changed, 108 insertions, 3 deletions
diff --git a/src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj b/src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj index 64d0bd0..686fc6f 100644 --- a/src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj +++ b/src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj @@ -3,10 +3,10 @@ <TargetFramework>net5.0</TargetFramework> </PropertyGroup> <ItemGroup> - <ProjectReference Include="..\..\Common\DevHive.Common.Models\DevHive.Common.csproj"/> + <ProjectReference Include="..\..\Common\DevHive.Common.Models\DevHive.Common.csproj" /> </ItemGroup> <ItemGroup> - <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2"/> - <PackageReference Include="SonarAnalyzer.CSharp" Version="8.18.0.27296"/> + <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" /> + <PackageReference Include="SonarAnalyzer.CSharp" Version="8.18.0.27296" /> </ItemGroup> </Project>
\ No newline at end of file diff --git a/src/Web/DevHive.Web.Models/Message/CreateMessageWebModel.cs b/src/Web/DevHive.Web.Models/Message/CreateMessageWebModel.cs new file mode 100644 index 0000000..b3c1740 --- /dev/null +++ b/src/Web/DevHive.Web.Models/Message/CreateMessageWebModel.cs @@ -0,0 +1,11 @@ +using System; + +namespace DevHive.Web.Models.Message +{ + public class CreateMessageWebModel + { + public string Content { get; set; } + + public Guid ChatId { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/Message/ReadMessageWebModel.cs b/src/Web/DevHive.Web.Models/Message/ReadMessageWebModel.cs new file mode 100644 index 0000000..a92a1e9 --- /dev/null +++ b/src/Web/DevHive.Web.Models/Message/ReadMessageWebModel.cs @@ -0,0 +1,19 @@ +using System; + +namespace DevHive.Web.Models.Message +{ + public class ReadMessageWebModel + { + public Guid Id { get; set; } + + public string CreatorFirstName { get; set; } + + public string CreatorLastName { get; set; } + + public string CreatorUsername { get; set; } + + public DateTime TimeCreated { get; set; } + + public string Content { get; set; } + } +} diff --git a/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs b/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs index c547951..2f1f3a1 100644 --- a/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs +++ b/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs @@ -19,6 +19,8 @@ namespace DevHive.Web.Configurations.Extensions services.AddTransient<ICommentRepository, CommentRepository>(); services.AddTransient<IFeedRepository, FeedRepository>(); services.AddTransient<IRatingRepository, RatingRepository>(); + services.AddTransient<IMessageRepository, MessageRepository>(); + //services.AddTransient<IChatRepository, ChatRepository>(); services.AddTransient<ILanguageService, LanguageService>(); services.AddTransient<IRoleService, RoleService>(); @@ -33,6 +35,8 @@ namespace DevHive.Web.Configurations.Extensions apiKey: configuration.GetSection("Cloud").GetSection("apiKey").Value, apiSecret: configuration.GetSection("Cloud").GetSection("apiSecret").Value)); services.AddTransient<IRateService, RateService>(); + services.AddTransient<IMessageService, MessageService>(); + //services.AddTransient<IChatService, ChatService>(); } } } diff --git a/src/Web/DevHive.Web/Configurations/Mapping/MessageMapping.cs b/src/Web/DevHive.Web/Configurations/Mapping/MessageMapping.cs new file mode 100644 index 0000000..71ed6b6 --- /dev/null +++ b/src/Web/DevHive.Web/Configurations/Mapping/MessageMapping.cs @@ -0,0 +1,19 @@ +using AutoMapper; +using DevHive.Services.Models.Message; +using DevHive.Web.Models.Message; + +namespace DevHive.Web.Configurations.Mapping +{ + public class MessageMapping : Profile + { + public MessageMapping() + { + CreateMap<CreateMessageWebModel, CreateMessageServiceModel>(); + + CreateMap<ReadMessageServiceModel, ReadMessageWebModel>() + .ForMember(dest => dest.CreatorFirstName, src => src.MapFrom(p => p.Creator.FirstName)) + .ForMember(dest => dest.CreatorLastName, src => src.MapFrom(p => p.Creator.LastName)) + .ForMember(dest => dest.CreatorUsername, src => src.MapFrom(p => p.Creator.UserName)); + } + } +} diff --git a/src/Web/DevHive.Web/Controllers/MessageController.cs b/src/Web/DevHive.Web/Controllers/MessageController.cs new file mode 100644 index 0000000..092c7fa --- /dev/null +++ b/src/Web/DevHive.Web/Controllers/MessageController.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DevHive.Services.Services; +using DevHive.Web.Models.Message; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace DevHive.Web.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class MessageController : ControllerBase + { + private readonly MessageService _messageService; + + public MessageController(MessageService messageService) + { + this._messageService = messageService; + } + + [HttpPost] + [Authorize(Roles = "User,Admin")] + public async Task<IActionResult> Create(Guid userId, [FromBody] CreateMessageWebModel createMessageWebModel, [FromHeader] string authorization) + { + throw new NotImplementedException(); + } + + [HttpGet] + [Authorize(Roles = "User,Admin")] + public async Task<IActionResult> Read(Guid id) + { + throw new NotImplementedException(); + } + + [HttpPut] + [Authorize(Roles = "User,Admin")] + public async Task<IActionResult> Update(Guid userId, [FromBody] object updateMessageWebModel, [FromHeader] string authorization) + { + //TODO: Authorize user + throw new NotImplementedException(); + } + + [HttpDelete] + [Authorize(Roles = "User,Admin")] + public async Task<IActionResult> Delete(Guid id, [FromHeader] string authorization) + { + //TODO: Authorize user + throw new NotImplementedException(); + } + } +} |
