diff options
Diffstat (limited to 'ExamTemplate')
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) { |
