aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDanail Dimitrov <danaildimitrov321@gmail.com>2021-02-19 22:17:33 +0200
committerDanail Dimitrov <danaildimitrov321@gmail.com>2021-02-19 22:17:33 +0200
commitce6471578364310de31ed02e21ba5d7ae6529234 (patch)
tree468602f05dd8e3ce05d717fb2b9252edfe4e280e /src
parentc700c79ce22c47f4dcc49d38d7d2192c0c6cb799 (diff)
parent1ff5502483c5ee8bab1ef0a70f61e18f6ba2399d (diff)
downloadDevHive-ce6471578364310de31ed02e21ba5d7ae6529234.tar
DevHive-ce6471578364310de31ed02e21ba5d7ae6529234.tar.gz
DevHive-ce6471578364310de31ed02e21ba5d7ae6529234.zip
More merges. Fuck it neshto napishi bate
Diffstat (limited to 'src')
-rw-r--r--src/Data/DevHive.Data.Models/Chat.cs17
-rw-r--r--src/Data/DevHive.Data.Models/Message.cs15
-rw-r--r--src/Data/DevHive.Data/DevHiveContext.cs1
-rw-r--r--src/Data/DevHive.Data/Interfaces/IChatRepository.cs9
-rw-r--r--src/Data/DevHive.Data/Interfaces/IMessageRepository.cs10
-rw-r--r--src/Data/DevHive.Data/Repositories/MessageRepository.cs16
-rw-r--r--src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj6
-rw-r--r--src/Services/DevHive.Services.Models/Message/CreateMessageServiceModel.cs13
-rw-r--r--src/Services/DevHive.Services.Models/Message/ReadMessageServiceModel.cs18
-rw-r--r--src/Services/DevHive.Services/Configurations/Mapping/MessageMappings.cs16
-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
16 files changed, 226 insertions, 6 deletions
diff --git a/src/Data/DevHive.Data.Models/Chat.cs b/src/Data/DevHive.Data.Models/Chat.cs
new file mode 100644
index 0000000..d68981f
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/Chat.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DevHive.Data.Models
+{
+ public class Chat
+ {
+ public HashSet<User> ChatMembers { get; set; }
+
+ public List<Message> Messages { get; set; }
+
+ public string ChatName { get; set; }
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/Message.cs b/src/Data/DevHive.Data.Models/Message.cs
new file mode 100644
index 0000000..89592f8
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/Message.cs
@@ -0,0 +1,15 @@
+using System;
+
+namespace DevHive.Data.Models
+{
+ public class Message
+ {
+ public User Creator { get; set; }
+
+ public string Content { get; set; }
+
+ public DateTime TimeCreated { get; set; }
+
+ public Chat Chat { get; set; }
+ }
+}
diff --git a/src/Data/DevHive.Data/DevHiveContext.cs b/src/Data/DevHive.Data/DevHiveContext.cs
index ece3439..b841bca 100644
--- a/src/Data/DevHive.Data/DevHiveContext.cs
+++ b/src/Data/DevHive.Data/DevHiveContext.cs
@@ -19,6 +19,7 @@ namespace DevHive.Data
public DbSet<Rating> Rating { get; set; }
public DbSet<RatedPost> RatedPost { get; set; }
public DbSet<UserRate> UserRate { get; set; }
+ public DbSet<Message> Message { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
diff --git a/src/Data/DevHive.Data/Interfaces/IChatRepository.cs b/src/Data/DevHive.Data/Interfaces/IChatRepository.cs
new file mode 100644
index 0000000..c4faf54
--- /dev/null
+++ b/src/Data/DevHive.Data/Interfaces/IChatRepository.cs
@@ -0,0 +1,9 @@
+using DevHive.Data.Models;
+using DevHive.Data.Repositories.Interfaces;
+
+namespace DevHive.Data.Interfaces
+{
+ public interface IChatRepository : IRepository<Chat>
+ {
+ }
+}
diff --git a/src/Data/DevHive.Data/Interfaces/IMessageRepository.cs b/src/Data/DevHive.Data/Interfaces/IMessageRepository.cs
new file mode 100644
index 0000000..f694bc0
--- /dev/null
+++ b/src/Data/DevHive.Data/Interfaces/IMessageRepository.cs
@@ -0,0 +1,10 @@
+using DevHive.Data.Models;
+using DevHive.Data.Repositories.Interfaces;
+
+namespace DevHive.Data.Interfaces
+{
+ public interface IMessageRepository : IRepository<Message>
+ {
+
+ }
+}
diff --git a/src/Data/DevHive.Data/Repositories/MessageRepository.cs b/src/Data/DevHive.Data/Repositories/MessageRepository.cs
new file mode 100644
index 0000000..9697c97
--- /dev/null
+++ b/src/Data/DevHive.Data/Repositories/MessageRepository.cs
@@ -0,0 +1,16 @@
+using DevHive.Data.Interfaces;
+using DevHive.Data.Models;
+
+namespace DevHive.Data.Repositories
+{
+ public class MessageRepository : BaseRepository<Message>, IMessageRepository
+ {
+ private readonly DevHiveContext _context;
+
+ public MessageRepository(DevHiveContext context)
+ : base(context)
+ {
+ this._context = context;
+ }
+ }
+}
diff --git a/src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj b/src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj
index 914efe0..11d95aa 100644
--- a/src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj
+++ b/src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj
@@ -3,10 +3,10 @@
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<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>
<ItemGroup>
- <ProjectReference Include="..\..\Common\DevHive.Common.Models\DevHive.Common.csproj"/>
+ <ProjectReference Include="..\..\Common\DevHive.Common.Models\DevHive.Common.csproj" />
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/src/Services/DevHive.Services.Models/Message/CreateMessageServiceModel.cs b/src/Services/DevHive.Services.Models/Message/CreateMessageServiceModel.cs
new file mode 100644
index 0000000..4206975
--- /dev/null
+++ b/src/Services/DevHive.Services.Models/Message/CreateMessageServiceModel.cs
@@ -0,0 +1,13 @@
+using System;
+
+namespace DevHive.Services.Models.Message
+{
+ public class CreateMessageServiceModel
+ {
+ public string Content { get; set; }
+
+ public Guid CreatorId { get; set; }
+
+ public Guid ChatId { get; set; }
+ }
+}
diff --git a/src/Services/DevHive.Services.Models/Message/ReadMessageServiceModel.cs b/src/Services/DevHive.Services.Models/Message/ReadMessageServiceModel.cs
new file mode 100644
index 0000000..1eaf9db
--- /dev/null
+++ b/src/Services/DevHive.Services.Models/Message/ReadMessageServiceModel.cs
@@ -0,0 +1,18 @@
+using System;
+using DevHive.Services.Models.User;
+
+namespace DevHive.Services.Models.Message
+{
+ public class ReadMessageServiceModel
+ {
+ public Guid Id { get; set; }
+
+ public Guid ChatId { get; set; }
+
+ public string Content { get; set; }
+
+ public DateTime TimeCreated { get; set; }
+
+ public UserServiceModel Creator { get; set; }
+ }
+}
diff --git a/src/Services/DevHive.Services/Configurations/Mapping/MessageMappings.cs b/src/Services/DevHive.Services/Configurations/Mapping/MessageMappings.cs
new file mode 100644
index 0000000..c727ea4
--- /dev/null
+++ b/src/Services/DevHive.Services/Configurations/Mapping/MessageMappings.cs
@@ -0,0 +1,16 @@
+using AutoMapper;
+using DevHive.Data.Models;
+using DevHive.Services.Models.Message;
+
+namespace DevHive.Services.Configurations.Mapping
+{
+ public class MessageMappings : Profile
+ {
+ public MessageMappings()
+ {
+ CreateMap<CreateMessageServiceModel, Message>();
+
+ CreateMap<Message, ReadMessageServiceModel>();
+ }
+ }
+}
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();
+ }
+ }
+}