aboutsummaryrefslogtreecommitdiff
path: root/ExamTemplate
diff options
context:
space:
mode:
Diffstat (limited to 'ExamTemplate')
-rw-r--r--ExamTemplate/Services/Interfaces/IBaseService.cs21
-rw-r--r--ExamTemplate/Services/Interfaces/IUserService.cs4
-rw-r--r--ExamTemplate/Services/Models/User/EditUserServiceModel.cs9
-rw-r--r--ExamTemplate/Services/Services/BaseService.cs81
-rw-r--r--ExamTemplate/Services/Services/UserService.cs8
-rw-r--r--ExamTemplate/Web/Configurations/ControllerUserMappings.cs2
-rw-r--r--ExamTemplate/Web/Controllers/AccountController.cs4
7 files changed, 110 insertions, 19 deletions
diff --git a/ExamTemplate/Services/Interfaces/IBaseService.cs b/ExamTemplate/Services/Interfaces/IBaseService.cs
new file mode 100644
index 0000000..55500ff
--- /dev/null
+++ b/ExamTemplate/Services/Interfaces/IBaseService.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+
+namespace ExamTemplate.Services.Interfaces
+{
+ public interface IBaseService<DbModel, ServiceModel>
+ where DbModel : class
+ where ServiceModel : class
+ {
+ Task<bool> CreateAsync(ServiceModel serviceModel);
+
+ Task<ServiceModel> GetByIdAsync(Guid id);
+
+ Task<List<ServiceModel>> GetAll();
+
+ Task<bool> EditAsync(ServiceModel serviceModel);
+
+ Task<bool> DeleteAsync(Guid id);
+ }
+}
diff --git a/ExamTemplate/Services/Interfaces/IUserService.cs b/ExamTemplate/Services/Interfaces/IUserService.cs
index 7f4c26f..35f14e3 100644
--- a/ExamTemplate/Services/Interfaces/IUserService.cs
+++ b/ExamTemplate/Services/Interfaces/IUserService.cs
@@ -1,8 +1,6 @@
using System.Security.Claims;
using System.Threading.Tasks;
using ExamTemplate.Services.Models.User;
-using Microsoft.AspNetCore.Identity;
-using Microsoft.EntityFrameworkCore;
namespace ExamTemplate.Services.Interfaces
{
@@ -18,7 +16,7 @@ namespace ExamTemplate.Services.Interfaces
Task<UserServiceModel> GetUserByClaimsAsync(ClaimsPrincipal claimsPrincipal);
- Task<bool> EditUserAsync(ClaimsPrincipal claimsPrincipal, EditUserServiceModel editUserServiceModel);
+ Task<bool> EditUserAsync(ClaimsPrincipal claimsPrincipal, UserServiceModel userServiceModel);
Task<bool> DeleteUserAsync(ClaimsPrincipal claimsPrincipal);
diff --git a/ExamTemplate/Services/Models/User/EditUserServiceModel.cs b/ExamTemplate/Services/Models/User/EditUserServiceModel.cs
deleted file mode 100644
index c8b9971..0000000
--- a/ExamTemplate/Services/Models/User/EditUserServiceModel.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace ExamTemplate.Services.Models.User
-{
- public class EditUserServiceModel
- {
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public string Username { get; set; }
- }
-}
diff --git a/ExamTemplate/Services/Services/BaseService.cs b/ExamTemplate/Services/Services/BaseService.cs
new file mode 100644
index 0000000..89b3239
--- /dev/null
+++ b/ExamTemplate/Services/Services/BaseService.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Threading.Tasks;
+using AutoMapper;
+using ExamTemplate.Data;
+using System.Collections.Generic;
+using Microsoft.EntityFrameworkCore;
+using System.Linq;
+using ExamTemplate.Services.Interfaces;
+
+namespace ExamTemplate.Services.Services
+{
+ public abstract class BaseService<DbModel, ServiceModel> : IBaseService<DbModel, ServiceModel>
+ where DbModel : class
+ where ServiceModel : class
+ {
+ protected IMapper _autoMapper { get; private set; }
+ protected TemplateContext _context { get; private set; }
+
+ protected BaseService(IMapper autoMapper, TemplateContext context)
+ {
+ this._autoMapper = autoMapper;
+ this._context = context;
+ }
+
+ public virtual async Task<bool> CreateAsync(ServiceModel serviceModel)
+ {
+ DbModel newEntity = this._autoMapper.Map<DbModel>(serviceModel);
+
+ await this.GetDbSet()
+ .AddAsync(newEntity);
+
+ return await this.SaveChangesAsync();
+ }
+
+ public virtual async Task<ServiceModel> GetByIdAsync(Guid id)
+ {
+ DbModel entity = await this.GetDbSet()
+ .FindAsync(id);
+
+ return this._autoMapper.Map<ServiceModel>(entity);
+ }
+
+ public virtual async Task<List<ServiceModel>> GetAll()
+ {
+ return await this.GetDbSet()
+ .Select(x => this._autoMapper.Map<ServiceModel>(x))
+ .ToListAsync();
+ }
+
+ public virtual async Task<bool> EditAsync(ServiceModel serviceModel)
+ {
+ DbModel entity = this._autoMapper.Map<DbModel>(serviceModel);
+
+ this._context.Update(entity);
+
+ return await this.SaveChangesAsync();
+ }
+
+ public virtual async Task<bool> DeleteAsync(Guid id)
+ {
+ DbModel entity = this.GetDbSet()
+ .Find(id);
+
+ this._context.Remove(entity);
+
+ return await this.SaveChangesAsync();
+ }
+
+ /// Get, Create, Edit and Delete use this method
+ /// Override it to add include statements (and so all other methods will work with includes too)
+ protected virtual DbSet<DbModel> GetDbSet()
+ {
+ return this._context.Set<DbModel>();
+ }
+
+ protected async Task<bool> SaveChangesAsync()
+ {
+ return await this._context.SaveChangesAsync() >= 1;
+ }
+ }
+}
diff --git a/ExamTemplate/Services/Services/UserService.cs b/ExamTemplate/Services/Services/UserService.cs
index dab0801..f2a3e9f 100644
--- a/ExamTemplate/Services/Services/UserService.cs
+++ b/ExamTemplate/Services/Services/UserService.cs
@@ -78,13 +78,13 @@ namespace ExamTemplate.Services.Services
return this._autoMapper.Map<UserServiceModel>(user);
}
- public async Task<bool> EditUserAsync(ClaimsPrincipal claimsPrincipal, EditUserServiceModel editUserServiceModel)
+ public async Task<bool> EditUserAsync(ClaimsPrincipal claimsPrincipal, UserServiceModel userServiceModel)
{
User user = await this._userManager.GetUserAsync(claimsPrincipal);
- user.UserName = editUserServiceModel.Username;
- user.FirstName = editUserServiceModel.FirstName;
- user.LastName = editUserServiceModel.LastName;
+ user.UserName = userServiceModel.Username;
+ user.FirstName = userServiceModel.FirstName;
+ user.LastName = userServiceModel.LastName;
IdentityResult result = await this._userManager.UpdateAsync(user);
return result.Succeeded;
diff --git a/ExamTemplate/Web/Configurations/ControllerUserMappings.cs b/ExamTemplate/Web/Configurations/ControllerUserMappings.cs
index 0a797af..9b798e6 100644
--- a/ExamTemplate/Web/Configurations/ControllerUserMappings.cs
+++ b/ExamTemplate/Web/Configurations/ControllerUserMappings.cs
@@ -12,7 +12,7 @@ namespace ExamTemplate.Services.Configurations
CreateMap<LoginUserViewModel, LoginUserServiceModel>();
CreateMap<UserServiceModel, UserViewModel>();
CreateMap<UserServiceModel, EditUserViewModel>();
- CreateMap<EditUserViewModel, EditUserServiceModel>();
+ CreateMap<EditUserViewModel, UserServiceModel>();
}
}
}
diff --git a/ExamTemplate/Web/Controllers/AccountController.cs b/ExamTemplate/Web/Controllers/AccountController.cs
index b7a1207..414304f 100644
--- a/ExamTemplate/Web/Controllers/AccountController.cs
+++ b/ExamTemplate/Web/Controllers/AccountController.cs
@@ -117,8 +117,8 @@ namespace ExamTemplate.Web.Controllers
UserServiceModel loggedInUser = await this._userService.GetUserByClaimsAsync(HttpContext.User);
- EditUserServiceModel editUserServiceModel = this._autoMapper.Map<EditUserServiceModel>(editUserViewModel);
- bool result = await this._userService.EditUserAsync(HttpContext.User, editUserServiceModel);
+ UserServiceModel userServiceModel = this._autoMapper.Map<UserServiceModel>(editUserViewModel);
+ bool result = await this._userService.EditUserAsync(HttpContext.User, userServiceModel);
if (result)
{