c# Web
Beğen (0)

Öğrencilere Ait Performans ve Uygulama Notlarının Girildiği Core Mvc Projesi Tasarlama15

Şimdi siteye üye olanlar için üyeliklerini aktif yapma işlemini gerçekleştirelim. Controller ve view dosyasını buna göre düzenleyelim.

Controller içinde UserApproval işlemi için gerekli view'a yönlendirme yapmamız ve işlemleri burada gerçekleştirmemiz gerekiyor. AdminController dosyasını aşağıdaki gibi güncelleyebiliriz:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using SchoolManagement.Data;
using SchoolManagement.Models;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace SchoolManagement.Controllers.Admin
{
    [Authorize(Roles = "Admin")]  // Admin yetkisi olmadan erişim engellenir
    public class AdminController : Controller
    {
        private readonly ApplicationDbContext _context;
        private readonly UserManager<ApplicationUser> _userManager;
        private readonly RoleManager<IdentityRole> _roleManager;

        // Constructor - RoleManager'ı ekliyoruz
        public AdminController(ApplicationDbContext context, UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager)
        {
            _context = context;
            _userManager = userManager;
            _roleManager = roleManager;
        }

        // Admin Dashboard - Admin paneline yönlendirme
        public IActionResult Dashboard()
        {
            return View(); // Dashboard sayfasına yönlendirme yapılır
        }

        // Üye Onayı Sayfası - Admin Paneli
        public async Task<IActionResult> UserApproval()
        {
            var users = await _userManager.Users.ToListAsync(); // Kullanıcıları asenkron olarak alıyoruz

            var userRoles = new List<dynamic>(); // Kullanıcılar ve rollerini tutacak liste

            foreach (var user in users)
            {
                // Her bir kullanıcı için rollerini alıyoruz
                var roles = await _userManager.GetRolesAsync(user);

                // Kullanıcı ve rollerini listeye ekliyoruz
                userRoles.Add(new
                {
                    user.Id,
                    user.UserName,
                    user.FullName,
                    user.Durum,
                    Roles = string.Join(", ", roles) // Roller virgülle birleştirilir
                });
            }

            return View("~/Views/Admin/Uyeler/UserApproval.cshtml", userRoles); // Kullanıcılar ve rollerini view'a gönderiyoruz
        }

        // Kullanıcı Onaylama ve Silme İşlemi - Seçilen kullanıcıları onaylar ve siler
        [HttpPost]
        public async Task<IActionResult> ApproveOrDeleteUsers(List<string> approvedUsers, List<string> deletedUsers)
        {
            var allUsers = await _userManager.Users.ToListAsync();
            bool isUpdated = false, isDeleted = false;

            try
            {
                // Kullanıcıları güncelle
                foreach (var user in allUsers)
                {
                    int eskiDurum = user.Durum;

                    if (approvedUsers != null && approvedUsers.Contains(user.Id))
                    {
                        user.Durum = 1; // Onaylandı
                    }
                    else
                    {
                        user.Durum = 2; // Pasif yap
                    }

                    if (user.Durum != eskiDurum) // Değişiklik varsa güncelle
                    {
                        var result = await _userManager.UpdateAsync(user);
                        if (!result.Succeeded)
                        {
                            TempData["ErrorMessage"] = $"Kullanıcı {user.UserName} güncellenirken hata oluştu.";
                            return RedirectToAction(nameof(UserApproval));
                        }
                        isUpdated = true;
                    }
                }

                // Kullanıcıları sil
                if (deletedUsers != null)
                {
                    foreach (var userId in deletedUsers)
                    {
                        var user = await _userManager.FindByIdAsync(userId);
                        if (user != null)
                        {
                            var result = await _userManager.DeleteAsync(user);
                            if (!result.Succeeded)
                            {
                                TempData["ErrorMessage"] = $"Kullanıcı {user.UserName} silinirken hata oluştu.";
                                return RedirectToAction(nameof(UserApproval));
                            }
                            isDeleted = true;
                        }
                    }
                }

                // **Dinamik Bildirim Mesajları**
                if (isUpdated && isDeleted)
                    TempData["SuccessMessage"] = "Kullanıcı bilgileri güncellendi ve bazı kullanıcılar silindi.";
                else if (isUpdated)
                    TempData["SuccessMessage"] = "Kullanıcı bilgileri güncellendi.";
                else if (isDeleted)
                    TempData["SuccessMessage"] = "Bazı kullanıcılar silindi.";
                else
                    TempData["InfoMessage"] = "Herhangi bir değişiklik yapılmadı."; // Eğer hiçbir şey değişmezse

            }
            catch (Exception ex)
            {
                TempData["ErrorMessage"] = "Beklenmeyen bir hata oluştu: " + ex.Message;
            }

            return RedirectToAction(nameof(UserApproval)); // Sayfayı yenile
        }
    }
}

Şimdi Views/Admin/Users altında UserApproval.cshtml dosyasını oluşturacağız. Bu dosya, kullanıcıları listeleyecek ve onay/silme işlemleri için checkbox'lar sağlayacak.

@model IEnumerable<dynamic>

@{
    ViewData["Title"] = "Üye Onayı";
}

<h2>@ViewData["Title"]</h2>

<!-- Kullanıcıya mesaj göstermek için alert kutuları -->
@if (TempData["SuccessMessage"] != null)
{
    <div class="alert alert-success">@TempData["SuccessMessage"]</div>
}
@if (TempData["ErrorMessage"] != null)
{
    <div class="alert alert-danger">@TempData["ErrorMessage"]</div>
}
@if (TempData["InfoMessage"] != null)
{
    <div class="alert alert-info">@TempData["InfoMessage"]</div>
}

<form method="post" asp-action="ApproveOrDeleteUsers">
    <table class="table table-bordered">
        <thead>
            <tr>
                <th>Kullanıcı Adı</th>
                <th>Adı Soyadı</th>
                <th>Rol</th>
                <th>Onay</th>
                <th>Sil</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var user in Model)
            {
                <tr>
                    <td>@user.UserName</td>
                    <td>@user.FullName</td>
                    <td>@user.Roles</td>
                    <td>
                        <!-- Onay kutusu, durum 1 ise işaretli, değilse boş -->
                        <input type="checkbox" name="approvedUsers" value="@user.Id" @(user.Durum == 1 ? "checked" : "") />
                    </td>
                    <td>
                        <!-- Kullanıcıyı silme kutusu -->
                        <input type="checkbox" name="deletedUsers" value="@user.Id" />
                    </td>
                </tr>
            }
        </tbody>
    </table>
    <button type="submit" class="btn btn-primary">Onayla ve Sil</button>
</form>
Okunma Sayısı: 2

Etiketler
core mvc create edit delete views 

Yorumlar

Yorum Ekle
Kötü İyi
İlgili Makaleler
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem Birinci Yazılı Çalışma Soruları
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem İkinci Yazılı Çalışma Soruları
2020 TYT Matematik Ortakatlı Kuralıyla İlgili Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama
Asp.Net Platformunda Harici JSON Dosyasından Namaz Vakitlerini Alma
Personele Ait Boy ve Kilo Bilgilerine Göre İdeal Kiloyu Bulan Uygulamayı Asp.Net İle Yapınız
ASP.NET ve ASP.NET Core Arasındaki Farklar
Asp.Net Uygulamalarında Modal PopUp Oluşturma
Core Mvc Uygulamalarında Sunucuya Dosya Yükleme
Core Mvc Projesinde Tuple Nesneleri Post Etme ve Yakalama İşlemleri
Visual Studio 2022 Programında Asp.Net Web Application Şablonu Görünmüyor Hatasını Düzeltme
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama8
Core Mvc Uygulamalarında Validation İşlemleri
Core Mvc Projesinde Kullanıcıdan Farklı Veri Alma Yöntemlerini Kullanarak Toplama İşlemini Gerçekleştirme
Core Mvc Projelerinde Kullanılan Tag Helper Kütüphanesi ve Özellikleri
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama2
Core Mvc Uygulamasında Sanal Data Kullanarak Personel Bilgilerini İşleyen Web Projesi Oluşturma3
Core Mvc Projelerinde Input Tag Helper Kullanımı
Asp.Net Uygulamalarında Repeater Kontrolü
Asp.Net Uygulamalarında ValidationSummary İşlemi
Core Mvc Projesinde User Model Validation Doğrulamalarını Client Tarafında Kontrol Etme