Добавил обработку пустых запросов
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s

This commit is contained in:
Sergey Karmanov 2023-07-30 06:05:56 +03:00
parent 8e16dfe567
commit bfea515ec2
Signed by: serega404
GPG Key ID: B6AD49C8C835460C
9 changed files with 89 additions and 23 deletions

View File

@ -29,11 +29,13 @@ public class HomeController : Controller
var random = new Random(DateTime.Now.Millisecond); var random = new Random(DateTime.Now.Millisecond);
universities = universities.OrderBy(x => random.Next()).ToList(); universities = universities.OrderBy(x => random.Next()).ToList();
return View(universities.ToList()); var answer = new UniversityViewModel(universities, searchString);
return View(answer);
} }
[Route("Directions")] [Route("Directions")]
public async Task<IActionResult> Directions(long universityId) public async Task<IActionResult> Directions(long universityId, string searchString)
{ {
if (universityId == 0) if (universityId == 0)
return RedirectToAction("Index"); return RedirectToAction("Index");
@ -41,9 +43,17 @@ public class HomeController : Controller
var answer = new UniversityDirectionsViewModel(); var answer = new UniversityDirectionsViewModel();
answer.University = await _universityService.GetUniversityById(universityId); answer.University = await _universityService.GetUniversityById(universityId);
answer.Directions = await _universityService.GetDirectionsByUniversityId(universityId); answer.Directions = await _universityService.GetDirectionsByUniversityId(universityId);
answer.SearchString = searchString;
if (!String.IsNullOrEmpty(searchString))
{
answer.Directions = answer.Directions.Where(s => s.Name!.ToLower().Contains(searchString.ToLower()) || s.Code!.ToLower().Contains(searchString.ToLower())).ToList();
}
return View(answer); return View(answer);
} }
[Route("Credits")]
public IActionResult Credits() public IActionResult Credits()
{ {
return View(); return View();

View File

@ -0,0 +1,10 @@
namespace PaydayFrontend.Models;
public class University
{
public long Id { get; set; }
public string Name { get; set; }
public string FullName { get; set; }
public string ImageUrl { get; set; }
public long MinPlaceCost { get; set; }
}

View File

@ -2,6 +2,18 @@
public class UniversityDirectionsViewModel public class UniversityDirectionsViewModel
{ {
public UniversityDirectionsViewModel()
{
}
public UniversityDirectionsViewModel(University university, List<Direction> directions, string searchString)
{
University = university;
Directions = directions;
SearchString = searchString;
}
public University University { get; set; } public University University { get; set; }
public List<Direction> Directions { get; set; } public List<Direction> Directions { get; set; }
public string SearchString { get; set; }
} }

View File

@ -1,10 +1,13 @@
namespace PaydayFrontend.Models; namespace PaydayFrontend.Models;
public class University public class UniversityViewModel
{ {
public long Id { get; set; } public UniversityViewModel(List<University> directions, string searchString)
public string Name { get; set; } {
public string FullName { get; set; } Directions = directions;
public string ImageUrl { get; set; } SearchString = searchString;
public long MinPlaceCost { get; set; } }
public List<University> Directions { get; set; }
public string SearchString { get; set; }
} }

View File

@ -10,28 +10,43 @@
<div class="navigation_fixed_background"></div> <div class="navigation_fixed_background"></div>
<div class="navigation_banks col-md-12" id="navigation"> <div class="navigation_banks col-md-12" id="navigation">
<div class="navigation_banks_univer" id="universe">@Model.University.Name</div> <div class="navigation_banks_univer" id="universe">@Model.University.Name</div>
<div id="navigation_row_block" class="navigation_input_block"> <form id="navigation_row_block" class="navigation_input_block">
<input type="text" class="navigation_input" placeholder="Введите код или название направления"><img src="/img/logo/search.svg" alt="search" class="navigation_search"> <input type="hidden" name="universityId" value="@Model.University.Id" />
</div> <input type="text" name="searchString" class="navigation_input" placeholder="Введите код или название направления" value="@Model.SearchString">
<input type="image" src="/img/logo/search.svg" alt="search" class="navigation_search">
</form>
</div> </div>
</div> </div>
<div class="row row-cols-lg-1 g-5 g-lg-3"> <div id="listDirections" class="row row-cols-lg-1 g-5 g-lg-3">
@{ @{
foreach (var direction in Model.Directions) foreach (var direction in Model.Directions)
{ {
<div class="col-md-12"> <div class="col-md-12">
<div class="navigation_info navigation_info_text p-3">@direction.Code - @direction.Name<span class="navigation_cost">От 5600 в мес.</span> 10+ Банков</div> <div class="navigation_info navigation_info_text p-3">@direction.Code - @direction.Name<span class="navigation_cost">От @float.Round(direction.PlaceCost/12) т в мес.</span> @direction.PlaceCost т в год</div>
</div> </div>
} }
} }
</div> </div>
<script>
var element = document.getElementById("listDirections");
var numberOfChildren = element.childElementCount;
if (numberOfChildren <= 0) {
Swal.fire(
'Ничего не найдено!',
"По вашему запросу ничего не найдено",
'warning'
).then((result) => {
window.location.replace("/Directions?universityId=@Model.University.Id");
})
}
</script>
</div> </div>
<div class="navigation_choise"> <div class="navigation_choise">
<div class="navigation_slid"> <div class="navigation_slid">
<a href="/" class="navigation_slid_disable">
<span class="navigation_slid_disable"></span> <span class="navigation_slid_disable"></span>
</a>
<span class="navigation_slid_active"></span> <span class="navigation_slid_active"></span>
<span class="navigation_slid_disable"></span> <span class="navigation_slid_disable"></span>
<span class="navigation_slid_disable"></span> <span class="navigation_slid_disable"></span>

View File

@ -1,4 +1,5 @@
@model List<University> @model UniversityViewModel
@{ @{
ViewData["Title"] = "Доступное образование"; ViewData["Title"] = "Доступное образование";
@ -6,13 +7,13 @@
<section class="universe"> <section class="universe">
<div class="container container_flex"> <div class="container container_flex">
<div class="row row_flex"> <div id="listUniversity" class="row row_flex">
<form class="universe_input_block col-md-12"> <form class="universe_input_block col-md-12">
<input type="text" class="universe_input" name="searchString" placeholder="Введите название вуза или суза..."> <input type="text" class="universe_input" name="searchString" placeholder="Введите название вуза или суза..." value="@Model.SearchString">
<input type="image" src="/img/logo/search.svg" alt="search" class="universe_search"> <input type="image" src="/img/logo/search.svg" alt="search" class="universe_search">
</form> </form>
@{ @{
foreach (var university in Model) foreach (var university in Model.Directions)
{ {
<a href="Directions?UniversityId=@university.Id" class="col-2 universe_card universe_card_text"> <a href="Directions?UniversityId=@university.Id" class="col-2 universe_card universe_card_text">
<img src="@university.ImageUrl" alt="universe" class="universe_icon"> <img src="@university.ImageUrl" alt="universe" class="universe_icon">
@ -25,8 +26,21 @@
} }
} }
</div> </div>
</div> </div>
<script>
var element = document.getElementById("listUniversity");
var numberOfChildren = element.childElementCount;
if (numberOfChildren <= 1) {
Swal.fire(
'Ничего не найдено!',
"По вашему запросу ничего не найдено",
'warning'
).then((result) => {
window.location.replace("/");
})
}
</script>
<div class="navigation_choise"> <div class="navigation_choise">
<div class="navigation_slid"> <div class="navigation_slid">
<span class="navigation_slid_active"></span> <span class="navigation_slid_active"></span>

View File

@ -21,8 +21,8 @@
<span></span> <span></span>
<span></span> <span></span>
</div> </div>
<img src="/img/logo/logoPayDay.png" alt="logo" class="menu_logo"> <a href="/"><img src="img/logo/logoPayDay.png" alt="logo" class="menu_logo"></a>
<div class="menu_project_name menu_project_name_text">Доступное образование</div> <a href="/" class="menu_project_name menu_project_name_text">Доступное образование</a>
</div> </div>
<!-- <button class="header_login"> <!-- <button class="header_login">
Вход через <span class="header_login_text">ЕСИА</span> Вход через <span class="header_login_text">ЕСИА</span>
@ -47,6 +47,7 @@
</div> </div>
</div> </div>
</nav> *@ </nav> *@
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
</header> </header>
@* <div class="container"> *@ @* <div class="container"> *@
<main role="main" class="pb-3"> <main role="main" class="pb-3">

View File

@ -55,6 +55,7 @@ header {
} }
.menu_project_name_text { .menu_project_name_text {
text-decoration: none;
color: #20d37d; color: #20d37d;
font-size: 3.5vh; font-size: 3.5vh;
font-style: normal; font-style: normal;