| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using Dapper;
- using Diligent.WebAPI.Contracts.DTOs.Categories;
- using Microsoft.Extensions.Configuration;
- using System;
- using System.Collections.Generic;
- using System.Data.SqlClient;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace Diligent.WebAPI.Business.Services
- {
- public class CategoryService : ICategoryService
- {
- private readonly DatabaseContext _context;
- private readonly IMapper _mapper;
- private readonly UserManager<User> _userManager;
- private readonly IConfiguration _configuration;
-
- public CategoryService(DatabaseContext context, IMapper mapper, UserManager<User> userManager, IConfiguration configuration)
- {
- _context = context;
- _mapper = mapper;
- _userManager = userManager;
- _configuration = configuration;
- }
-
- public async Task<List<CategoriesNamesResponse>> GetCategoriesNamesAsync(int userId)
- {
- var user = await _userManager.FindByIdAsync(userId.ToString());
- var role = (await _userManager.GetRolesAsync(user))[0];
-
- if(role == "SuperAdmin") return _mapper.Map<List<CategoriesNamesResponse>>(await _context.Categories.ToListAsync());
- else
- {
- using var connection = new SqlConnection(_configuration.GetConnectionString("WebApi"));
- var sql = @"SELECT C.Id, C.Name FROM AspNetUsers AS U INNER JOIN UserCategories AS UC ON U.Id = UC.UserId
- INNER JOIN Categories AS C ON UC.CategoryId = C.Id WHERE U.Id = @UserId";
- var categories = await connection.QueryAsync<CategoriesNamesResponse>(sql, new { UserId = userId });
- var categoriesList = categories.ToList();
- return categoriesList;
- }
-
- }
-
- public async Task<Category> GetCategoryEntityById(int id) =>
- await _context.Categories.Where(x => x.Id == id).FirstOrDefaultAsync();
-
- public async Task<List<IsGrantedCategory>> GetCategories(int userId)
- {
- var grantedCategories = await _context.UserCategories.Where(k => k.UserId == userId).ToListAsync();
- var allCategories = await _context.Categories.ToListAsync();
- var result = new List<IsGrantedCategory>();
- for (int i = 0; i < allCategories.Count; i++)
- {
- var newCategory = new IsGrantedCategory
- {
- Id = allCategories[i].Id,
- Name = allCategories[i].Name,
- };
- bool isGranted = false;
- for (int j = 0; j < grantedCategories.Count; j++)
- {
- if(grantedCategories[j].CategoryId == allCategories[i].Id && userId == grantedCategories[j].UserId)
- {
- isGranted = true;
- break;
- }
- }
- newCategory.IsChecked = isGranted;
- result.Add(newCategory);
- isGranted = false;
- }
-
- return result;
- }
- }
- }
|