Скриншот архива с проектом
Структура проекта
Задание
Разработка приложения «Учёт в ЖКО заказов на ремонт от жильцов» с помощью технологий ADO.NET и ASP.NET.
Используемые технологии:
-
язык C#
-
ASP.NET Core MVC NET 9 вместо устаревшего подхода в задании
-
Entity Framework Core вместо ADO.NET
Функционал программы
🏠 Учёт жильцов
Функционал модуля "Жильцы" позволяет вести полную информацию о проживающих:
-
Добавление жильцов: ввод ФИО, адреса проживания, контактной информации и истории обращений.
-
Удаление жильцов: исключение жильцов из системы при необходимости.
-
Редактирование: изменение данных о жильце.
-
Просмотр списка: отображение всех зарегистрированных жильцов.
📝 Учёт заявок
Модуль "Заявки" предназначен для создания и управления заявками на работы:
-
Создание заявок: указание клиента, даты, типа работ и текущего статуса.
-
Редактирование: возможность изменения наименования, вместимости и других характеристик заявки.
-
Удаление: удаление ненужных или завершённых заявок.
-
Просмотр списка: отображение всех текущих и прошлых заявок.
-
Ответственный сотрудник: отображение информации о сотруднике, назначенном на заявку.
-
Жильцы по заявке: просмотр жильцов, прикреплённых к конкретной заявке.
-
Ограничения: каждая заявка может включать не более 10 слотов.
🧑🔧 Учёт сотрудников
Модуль "Сотрудники" позволяет вести кадровый учёт:
-
Добавление сотрудников: ввод ФИО, возраста, стажа, квалификации и номера кабинета.
-
Удаление: исключение сотрудника из системы.
-
Редактирование: изменение персональных и профессиональных данных.
-
Просмотр списка: отображение всех сотрудников с возможностью поиска и фильтрации.
🏢 Учёт кабинетов
Модуль "Кабинеты" используется для управления служебными помещениями:
-
Добавление кабинетов: регистрация новых кабинетов с указанием номера.
-
Удаление: исключение кабинетов из системы.
-
Редактирование: возможность изменения номера кабинета.
-
Просмотр списка: отображение всех кабинетов.
-
Сотрудники: просмотр сотрудников, закреплённых за каждым кабинетом.
Фрагмент программного кода
using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using HCS_Requests.Data; using HCS_Requests.Data.Models.Entities.Orders; namespace HCS_Requests.Controllers { public class OrdersController : Controller { private readonly ApplicationDbContext _context; public OrdersController(ApplicationDbContext context) { _context = context; } // GET: Orders public async Task<IActionResult> Index() { var applicationDbContext = _context.Orders.Include(o => o.Employee); return View(await applicationDbContext.ToListAsync()); } // GET: Orders/Details/5 public async Task<IActionResult> Details(int? id) { if (id == null) { return NotFound(); } var order = await _context.Orders .Include(o => o.Employee) .ThenInclude(e => e.Room) .Include(r => r.Customers) .FirstOrDefaultAsync(m => m.Id == id); if (order == null) { return NotFound(); } return View(order); } // GET: Orders/Create public IActionResult Create() { ViewBag.Employees = _context.Employees.ToList(); return View(); } // POST: Orders/Create // To protect from overposting attacks, enable the specific properties you want to bind to. // For more details, see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create([Bind("Id,Number,Name,MaxClients,AvailableSlots,OrderDate,Clients,Statuses,EmployeeId")] Order order) { if (ModelState.IsValid) { _context.Add(order); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); } ViewBag.Employees = _context.Employees.ToList(); return View(order); } // GET: Orders/Edit/5 public async Task<IActionResult> Edit(int? id) { if (id == null) { return NotFound(); } var order = await _context.Orders.FindAsync(id); if (order == null) { return NotFound(); } ViewBag.Employees = _context.Employees.ToList(); return View(order); } // POST: Orders/Edit/5 // To protect from overposting attacks, enable the specific properties you want to bind to. // For more details, see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Edit(int id, [Bind("Id,Number,Name,MaxClients,AvailableSlots,OrderDate,Clients,Statuses,EmployeeId")] Order order) { if (id != order.Id) { return NotFound(); } if (ModelState.IsValid) { try { _context.Update(order); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(order.Id)) { return NotFound(); } else { throw; } } return RedirectToAction(nameof(Index)); } ViewBag.Employees = _context.Employees.ToList(); return View(order); } // GET: Orders/Delete/5 public async Task<IActionResult> Delete(int? id) { if (id == null) { return NotFound(); } var order = await _context.Orders .Include(o => o.Employee) .FirstOrDefaultAsync(m => m.Id == id); if (order == null) { return NotFound(); } return View(order); } // POST: Orders/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public async Task<IActionResult> DeleteConfirmed(int id) { var order = await _context.Orders.FindAsync(id); if (order != null) { _context.Orders.Remove(order); } await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); } private bool OrderExists(int id) { return _context.Orders.Any(e => e.Id == id); } } }
Пояснения по запуску программы
1. Установить среду разработки (естественно не Visual Studio Code)? а Visual Studio 2022 Community. 2/ Настроить и установить все рабочие нагрузки. 3. Установить SSMS 4. Присоединить базу данных. 5. Запустить сперва проект с помощью среды разработки а затем из среды разработки запустить код.
-