aboutsummaryrefslogtreecommitdiff
path: root/src/Web
diff options
context:
space:
mode:
Diffstat (limited to 'src/Web')
-rw-r--r--src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj6
-rw-r--r--src/Web/DevHive.Web.Models/Message/CreateMessageWebModel.cs11
-rw-r--r--src/Web/DevHive.Web.Models/Message/ReadMessageWebModel.cs19
-rw-r--r--src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs4
-rw-r--r--src/Web/DevHive.Web/Configurations/Mapping/MessageMapping.cs19
-rw-r--r--src/Web/DevHive.Web/Controllers/MessageController.cs52
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();
+ }
+ }
+}