Скриншот архива с проектом

Структура проекта
Задание
Разработка приложения «Учёт в ЖКО заказов на ремонт от жильцов» с помощью технологий 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. Запустить сперва проект с помощью среды разработки а затем из среды разработки запустить код.

Телеграм
-