Esempio n. 1
0
        public async Task <ServiceResult> RemoveFromRoles(int id, KorisnickiNalogRolesUpsertDto request)
        {
            var korisnickiNalog = await _dbContext.KorisnickiNalozi.FindAsync(id);

            if (korisnickiNalog == null)
            {
                return(ServiceResult.NotFound($"Korisnicki nalog sa ID-em {id} nije pronadjen."));
            }

            var roleKorisnickiNalog = await _dbContext.RolesKorisnickiNalozi.FirstOrDefaultAsync(x =>
                                                                                                 x.RoleId == request.RoleId && korisnickiNalog.Id == x.KorisnickiNalogId);

            if (roleKorisnickiNalog == null)
            {
                return(ServiceResult.BadRequest($"Korisnik sa ID-em {id} ne poseduje role sa ID-em {request.RoleId}"));
            }

            await Task.Run(() =>
            {
                _dbContext.RolesKorisnickiNalozi.Remove(roleKorisnickiNalog);
            });

            await _dbContext.SaveChangesAsync();

            await _dbContext.Entry(korisnickiNalog).Collection(x => x.RolesKorisnickiNalog).LoadAsync();

            return(ServiceResult.OK(_mapper.Map <KorisnickiNalogDtoLL>(korisnickiNalog)));
        }
        public async Task <IActionResult> RemoveFromRoles(int id, KorisnickiNalogRolesUpsertDto request)
        {
            var result = await _korisnikService.RemoveFromRoles(id, request);

            if (!result.Succeeded)
            {
                return(WithStatusCode(result.StatusCode, result.Message));
            }

            return(Ok(result.Data));
        }
Esempio n. 3
0
        public async Task <ServiceResult> AddInRoles(int id, KorisnickiNalogRolesUpsertDto request)
        {
            var korisnickiNalog = await _dbContext.KorisnickiNalozi.FindAsync(id);

            if (korisnickiNalog == null)
            {
                return(ServiceResult.NotFound($"Korisnicki nalog sa ID-em {id} nije pronadjen."));
            }

            if (!await _dbContext.Roles.AnyAsync(x => x.Id == request.RoleId))
            {
                return(ServiceResult.NotFound($"Rola sa ID-em {request.RoleId} nije pronadjena."));
            }

            var rolesToAdd = RolesToAdd((RoleType)request.RoleId); //Roles sa manje persmisija, a koje se dodaju uz role sa vecim permisijama

            var oldRoles = _dbContext.RolesKorisnickiNalozi.Where(x => x.KorisnickiNalog.Id == korisnickiNalog.Id);

            if (await oldRoles.AnyAsync())
            {
                _dbContext.RemoveRange(oldRoles);
            }

            foreach (var roleId in rolesToAdd)
            {
                await _dbContext.RolesKorisnickiNalozi.AddAsync(new RoleKorisnickiNalog
                {
                    KorisnickiNalogId = korisnickiNalog.Id,
                    RoleId            = roleId.ToInt()
                });

                await _dbContext.SaveChangesAsync();
            }

            await _dbContext.Entry(korisnickiNalog).Collection(x => x.RolesKorisnickiNalog).LoadAsync();

            return(new ServiceResult(_mapper.Map <KorisnickiNalogDtoLL>(korisnickiNalog)));
        }