c# Web

Öğ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>

Etiketler
core mvc create edit delete views 
İlgili Makaleler
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
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama1
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem Birinci Yazılı Çalışma Soruları
Visual Studio 2022 Programında Asp.Net Web Application Şablonu Görünmüyor Hatasını Düzeltme
Core Mvc Projesinde Tuple Nesneleri Post Etme ve Yakalama İşlemleri
Seri Port Yardımıyla Arduino Devresine Bağlanıp Ledleri Asp.Net Web Uygulamasından Yakıp Söndürme
Sitenin Alexa Dünya Sıralamasını Kodlarla Öğrenme
Personele Ait Boy ve Kilo Bilgilerine Göre İdeal Kiloyu Bulan Uygulamayı Asp.Net İle Yapınız
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama4
Bir Otobüs Firmasına Ait Bilet Satış İşlemlerini Class(Sınıf) Tanımlayarak Yapan c# Form Uygulaması
Asp.Net Uygulamasında Manual Olarak JSON Oluşturma
Asp.Net Uygulamalarında Modal PopUp Oluşturma
Web Uygulamalarında SqLite Kullanımı
Asp.Net Uygulamalarında DataList (Veri Listeleme) Kontrolü
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama2
C# Uygulamasında Miladi Takvimi Hicri Takvime, Hicri Takvimi Miladi Takvime Dönüştürme
RadioButton ile Cinsiyet Bilgisini Alan Asp.Net c# Uygulaması
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama3
2022 TYT Matematik Onbirinci Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama

Yorum Ekle
   
Kötü İyi