Compare commits

...

17 Commits

Author SHA1 Message Date
e7bb26430b Добавили редактирование банков
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 25s
2023-07-30 14:53:19 +03:00
f9531e2c06 LastFix
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s
2023-07-30 14:38:27 +03:00
0fbeb6160a Добавил глобальный поиск
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 29s
2023-07-30 14:21:27 +03:00
e269c8dce5 Небольшие багфиксы
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 29s
2023-07-30 13:11:11 +03:00
f323c901ce Настроил cshtml
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 29s
2023-07-30 12:02:29 +03:00
9d7bce6bc8 Admin Pannel
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 9s
2023-07-30 11:09:31 +03:00
598bcb5b83 new
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s
2023-07-30 11:07:45 +03:00
b7f3f20dae Сделал кнопку назад
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s
2023-07-30 10:56:53 +03:00
9f5c2c4d47 Сделал третью страницу
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s
2023-07-30 08:24:54 +03:00
bfea515ec2 Добавил обработку пустых запросов
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s
2023-07-30 06:05:56 +03:00
8e16dfe567 modal_form
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s
2023-07-30 04:42:30 +03:00
8a6f3ac806 Доделал вторую вкладку
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 8s
2023-07-30 04:06:42 +03:00
385f7dc6e7 Обновил текст
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s
2023-07-30 02:37:55 +03:00
8e93018bf8 Добавил команду запуска в readme 2023-07-30 02:37:46 +03:00
4f2c498a21 new
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 23s
2023-07-30 02:36:00 +03:00
75cb88bdc2 Форма третья секция
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 24s
2023-07-30 02:35:34 +03:00
247f0fcd56 Добавил поддержку CI
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 28s
2023-07-30 02:04:26 +03:00
45 changed files with 1561 additions and 216 deletions

View File

@ -0,0 +1,41 @@
name: Create and publish a Docker image
on:
push:
branches: ['main']
env:
REGISTRY: git.zetcraft.ru
jobs:
build-and-push-image:
runs-on: ubuntu-latest
container: catthehacker/ubuntu:act-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ${{ env.REGISTRY }}
username: ${{ gitea.actor }}
password: ${{ secrets.TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: https://github.com/docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ gitea.repository }}
- name: Build and push Docker image
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: PaydayFrontend
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@ -1,11 +1,64 @@
using System.Diagnostics; using System.Diagnostics;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using PaydayFrontend.Models; using PaydayFrontend.Models;
using PaydayFrontend.Services;
namespace PaydayFrontend.Controllers; namespace PaydayFrontend.Controllers;
public class AdminController : Controller public class AdminController : Controller
{ {
private readonly IUniversityService _universityService;
private readonly IBankService _bankService;
public AdminController(IUniversityService universityService, IBankService bankService)
{
_universityService = universityService;
_bankService = bankService;
}
public async Task<IActionResult> Index(string searchString)
{
var result = new AdminViewModel();
result.searchString = searchString;
result.indexes = new();
if (!String.IsNullOrEmpty(searchString))
{
IEnumerable<University> universities = await _universityService.GetAllUniversity();
universities = universities.Where(s => s.Name!.ToLower().Contains(searchString.ToLower()) || s.FullName!.ToLower().Contains(searchString.ToLower())).ToList();
IEnumerable<Bank> banks = await _bankService.GetAllBanks();
banks = banks.Where(s => s.Name!.ToLower().Contains(searchString.ToLower())).ToList();
foreach (var university in universities)
{
result.indexes.Add(new AdminIndexViewModel
{
Name = university.Name,
LogoUrl = university.ImageUrl,
Type = "Университет"
});
}
foreach (var bank in banks)
{
result.indexes.Add(new AdminIndexViewModel
{
Name = bank.Name,
LogoUrl = bank.ImageUrl,
Type = "Банк"
});
}
}
return View(result);
}
public async Task<IActionResult> Universities()
{
return View();
}
public async Task<IActionResult> Banks()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error() public IActionResult Error()

View File

@ -9,40 +9,64 @@ public class HomeController : Controller
{ {
private readonly ILogger<HomeController> _logger; private readonly ILogger<HomeController> _logger;
private readonly IUniversityService _universityService; private readonly IUniversityService _universityService;
private readonly IBankService _bankService;
public HomeController(ILogger<HomeController> logger, IUniversityService universityService) public HomeController(ILogger<HomeController> logger, IUniversityService universityService, IBankService bankService)
{ {
_logger = logger; _logger = logger;
_universityService = universityService; _universityService = universityService;
_bankService = bankService;
} }
public async Task<IActionResult> Index(string searchString) public async Task<IActionResult> Index(string searchString)
{ {
IEnumerable<University> universities = await _universityService.GetAllUniversity(); List<University> universities = await _universityService.GetAllUniversity();
if (!String.IsNullOrEmpty(searchString)) if (!String.IsNullOrEmpty(searchString))
{ {
universities = universities.Where(s => s.Name!.ToLower().Contains(searchString.ToLower())); universities = universities.Where(s => s.Name!.ToLower().Contains(searchString.ToLower()) || s.FullName!.ToLower().Contains(searchString.ToLower())).ToList();
} }
return View(universities.ToList()); // Выдача университетов в случайном порядке
var random = new Random(DateTime.Now.Millisecond);
universities = universities.OrderBy(x => random.Next()).ToList();
var answer = new UniversityViewModel(universities, searchString);
return View(answer);
} }
[Route("Directions")] [Route("Directions")]
public IActionResult Directions(long universityId) public async Task<IActionResult> Directions(long universityId, string searchString)
{ {
Console.WriteLine(universityId);
if (universityId == 0) if (universityId == 0)
return RedirectToAction("Index"); return RedirectToAction("Index");
var answer = new DirectionsViewModel();
answer.University = await _universityService.GetUniversityById(universityId);
answer.Directions = await _universityService.GetDirectionsByUniversityId(universityId);
answer.SearchString = searchString;
if (!String.IsNullOrEmpty(searchString))
return View(); {
answer.Directions = answer.Directions.Where(s => s.Name!.ToLower().Contains(searchString.ToLower()) || s.Code!.ToLower().Contains(searchString.ToLower())).ToList();
} }
public IActionResult Credits() return View(answer);
}
[Route("Credits")]
public async Task<IActionResult> Credits(long universityId, long directionId, string searchString)
{ {
return View(); if (universityId == 0 || directionId == 0)
return RedirectToAction("Index");
var answer = new CreditsViewModel();
answer.University = await _universityService.GetUniversityById(universityId);;
answer.Direction = await _universityService.GetDirectionsById(directionId);
answer.Offers = await _bankService.GetOffers(directionId);
return View(answer);
} }
public IActionResult Privacy() public IActionResult Privacy()

View File

@ -1,20 +1,22 @@
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app WORKDIR /app
EXPOSE 80 EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src WORKDIR /src
COPY ["PaydayFrontend/PaydayFrontend.csproj", "PaydayFrontend/"] COPY ["PaydayFrontend.csproj", "PaydayFrontend.csproj"]
RUN dotnet restore "PaydayFrontend/PaydayFrontend.csproj" RUN dotnet restore "PaydayFrontend.csproj"
COPY . . COPY . .
WORKDIR "/src/PaydayFrontend" WORKDIR "/src"
RUN dotnet build "PaydayFrontend.csproj" -c Release -o /app/build RUN dotnet build "PaydayFrontend.csproj" -c Release -o /app/build
FROM build AS publish FROM build AS publish
RUN dotnet publish "PaydayFrontend.csproj" -c Release -o /app/publish /p:UseAppHost=false RUN dotnet publish "PaydayFrontend.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final FROM base AS final
RUN apt-get update && apt-get install -y curl
WORKDIR /app WORKDIR /app
#HEALTHCHECK --interval=5s --timeout=10s --retries=3 CMD curl --fail http://localhost:80/health || exit 1
COPY --from=publish /app/publish . COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "PaydayFrontend.dll"] ENTRYPOINT ["dotnet", "PaydayFrontend.dll"]

View File

@ -0,0 +1,8 @@
namespace PaydayFrontend.Models;
public class AdminIndexViewModel
{
public string Name { get; set; }
public string LogoUrl { get; set; }
public string Type { get; set; }
}

View File

@ -0,0 +1,7 @@
namespace PaydayFrontend.Models;
public class AdminViewModel
{
public List<AdminIndexViewModel> indexes { get; set; }
public string searchString { get; set; }
}

View File

@ -0,0 +1,8 @@
namespace PaydayFrontend.Models;
public class Bank
{
public long Id { get; set; }
public string Name { get; set; }
public string ImageUrl { get; set; }
}

View File

@ -0,0 +1,8 @@
namespace PaydayFrontend.Models;
public class CreditsViewModel
{
public University University { get; set; }
public Direction Direction { get; set; }
public IEnumerable<Offer> Offers { get; set; }
}

View File

@ -8,4 +8,5 @@ public class Direction
public string Name { get; set; } public string Name { get; set; }
public string Url { get; set; } public string Url { get; set; }
public int PlaceCost { get; set; } public int PlaceCost { get; set; }
public string UniversityName { get; set; }
} }

View File

@ -0,0 +1,19 @@
namespace PaydayFrontend.Models;
public class DirectionsViewModel
{
public DirectionsViewModel()
{
}
public DirectionsViewModel(University university, List<Direction> directions, string searchString)
{
University = university;
Directions = directions;
SearchString = searchString;
}
public University University { get; set; }
public List<Direction> Directions { get; set; }
public string SearchString { get; set; }
}

View File

@ -0,0 +1,10 @@
namespace PaydayFrontend.Models;
public class Offer
{
public long DirectionId { get; set; }
public string BankIconUrl { get; set; }
public string BankName { get; set; }
public float BankPercent { get; set; }
public long BankId { get; set; }
}

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

@ -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

@ -12,6 +12,10 @@
<None Update="app.db" CopyToOutputDirectory="PreserveNewest" ExcludeFromSingleFile="true" /> <None Update="app.db" CopyToOutputDirectory="PreserveNewest" ExcludeFromSingleFile="true" />
</ItemGroup> </ItemGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<NoWarn>1701;1702;IL2121,1591</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.9" /> <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.9" /> <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.9" />
@ -27,4 +31,19 @@
</Content> </Content>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\admin\" />
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="wwwroot\admin\sass\dist\style.css" />
<_ContentIncludedByDefault Remove="wwwroot\admin\sass\dist\_media.css" />
<_ContentIncludedByDefault Remove="wwwroot\admin\sass\dist\_mixins.css" />
<_ContentIncludedByDefault Remove="wwwroot\admin\sass\style.sass" />
<_ContentIncludedByDefault Remove="wwwroot\admin\sass\_general.sass" />
<_ContentIncludedByDefault Remove="wwwroot\admin\sass\_media.sass" />
<_ContentIncludedByDefault Remove="wwwroot\admin\sass\_mixins.sass" />
<_ContentIncludedByDefault Remove="wwwroot\admin\img\Vector.svg" />
</ItemGroup>
</Project> </Project>

View File

@ -21,6 +21,7 @@ builder.Services.AddHttpClient("backend", client =>
client.DefaultRequestHeaders.Add("Accept", "application/json"); client.DefaultRequestHeaders.Add("Accept", "application/json");
}); });
builder.Services.AddTransient<IUniversityService, UniversityService>(); builder.Services.AddTransient<IUniversityService, UniversityService>();
builder.Services.AddTransient<IBankService, BankService>();
var app = builder.Build(); var app = builder.Build();

View File

@ -0,0 +1,43 @@
using System.Text.Json;
using PaydayFrontend.Models;
namespace PaydayFrontend.Services;
public interface IBankService
{
public Task<List<Bank>> GetAllBanks();
public Task<IEnumerable<Offer>> GetOffers(long directionId);
}
public class BankService : IBankService
{
private readonly HttpClient _httpClient;
public BankService(HttpClient httpClient)
{
_httpClient = httpClient;
_httpClient.BaseAddress = new Uri("https://payday.zetcraft.ru");
}
public async Task<List<Bank>> GetAllBanks()
{
var response = await _httpClient.GetAsync("v1/admin/banks");
var result = await response.Content.ReadAsStringAsync();
var banks = JsonSerializer.Deserialize<List<Bank>>(result, new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
});
return banks;
}
public async Task<IEnumerable<Offer>> GetOffers(long directionId)
{
var response = await _httpClient.GetAsync("v1/public/credit/direction/" + directionId);
var result = await response.Content.ReadAsStringAsync();
var offers = JsonSerializer.Deserialize<IEnumerable<Offer>>(result, new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
});
return offers;
}
}

View File

@ -6,7 +6,9 @@ namespace PaydayFrontend.Services;
public interface IUniversityService public interface IUniversityService
{ {
public Task<List<University>> GetAllUniversity(); public Task<List<University>> GetAllUniversity();
public Task<List<University>> GetDirectionsByUniversityId(); public Task<List<Direction>> GetDirectionsByUniversityId(long universityId);
public Task<University> GetUniversityById(long id);
public Task<Direction> GetDirectionsById(long directionId);
} }
public class UniversityService : IUniversityService public class UniversityService : IUniversityService
@ -30,14 +32,37 @@ public class UniversityService : IUniversityService
return university; return university;
} }
public async Task<List<University>> GetDirectionsByUniversityId() public async Task<List<Direction>> GetDirectionsByUniversityId(long universityId)
{ {
var response = await _httpClient.GetAsync("v1/public/university"); var response = await _httpClient.GetAsync($"v1/public/university/{universityId}/directions");
var result = await response.Content.ReadAsStringAsync(); var result = await response.Content.ReadAsStringAsync();
var university = JsonSerializer.Deserialize<List<University>>(result, new JsonSerializerOptions var directions = JsonSerializer.Deserialize<List<Direction>>(result, new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
});
return directions;
}
public async Task<Direction> GetDirectionsById(long directionId)
{
var response = await _httpClient.GetAsync("v1/public/direction/" + directionId);
var result = await response.Content.ReadAsStringAsync();
var direction = JsonSerializer.Deserialize<Direction>(result, new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
});
return direction;
}
public async Task<University> GetUniversityById(long id)
{
var response = await _httpClient.GetAsync("v1/public/university/" + id);
var result = await response.Content.ReadAsStringAsync();
var university = JsonSerializer.Deserialize<University>(result, new JsonSerializerOptions
{ {
PropertyNameCaseInsensitive = true PropertyNameCaseInsensitive = true
}); });
return university; return university;
} }
} }

View File

@ -0,0 +1,63 @@
<senction class="banks">
<div class="flex_column">
<div class="page">Главная/Банки</div>
<form id="navigation_row_block" class="navigation_input_block">
<input type="hidden" name="universityId" value="6">
<input type="text" name="searchString" class="navigation_input" placeholder="Введите название банка...">
<input type="image" src="~/img/search.svg" alt="search" class="navigation_search">
</form>
<div class="hamburger">
<span class="first_line" ></span>
<span class="second_line"></span>
</div>
</div>
<div class="row flex_row">
<div class="row fix row-cols-lg-10 flex_container_center">
<div class="col-11 navigation_card navigation_bank_text" id="add">
<div class="navigation_bank" id="add_text">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon add_img">Альфа Банк
</div>
<div class="navigation_credit add_procent">
<div class="delete_btn">
<img class="delete_btn_img_black" src="~/img/del_black.svg" alt="del"><img class="delete_btn_img_red" src="./img/del_red.svg" alt="del">
</div>
<div class="delete_btn">
<img class="delete_btn_img_black" src="~/img/pencil_black.svg" alt="del"><img class="delete_btn_img_red" src="./img/pencil_red.svg" alt="del">
</div>
</div>
</div>
</div> <div style="margin-top: 20px;" class="row fix row-cols-lg-10 flex_container_center">
<div class="col-11 navigation_card navigation_bank_text" id="add">
<div class="navigation_bank" id="add_text">
<img src="https://payday.zetcraft.ru/logos/Sberbank.png" alt="navigation" class="navigation_icon add_img">Сбербанк
</div>
<div class="navigation_credit add_procent">
<div class="delete_btn">
<img class="delete_btn_img_black" src="~/img/del_black.svg" alt="del"><img class="delete_btn_img_red" src="./img/del_red.svg" alt="del">
</div>
<div class="delete_btn">
<img class="delete_btn_img_black" src="~/img/pencil_black.svg" alt="del"><img class="delete_btn_img_red" src="./img/pencil_red.svg" alt="del">
</div>
</div>
</div>
</div> <div style="margin-top: 20px;" class="row fix row-cols-lg-10 flex_container_center">
<div class="col-11 navigation_card navigation_bank_text" id="add">
<div class="navigation_bank" id="add_text">
<img src="https://payday.zetcraft.ru/logos/Tin'koff.png" alt="navigation" class="navigation_icon add_img">Тинькофф
</div>
<div class="navigation_credit add_procent">
<div class="delete_btn">
<img class="delete_btn_img_black" src="~/img/del_black.svg" alt="del"><img class="delete_btn_img_red" src="./img/del_red.svg" alt="del">
</div>
<div class="delete_btn">
<img class="delete_btn_img_black" src="~/img/pencil_black.svg" alt="del"><img class="delete_btn_img_red" src="./img/pencil_red.svg" alt="del">
</div>
</div>
</div>
</div>
</div>
</senction>

View File

@ -0,0 +1,31 @@
@model AdminViewModel
<senction class="banks">
<div class="flex_column">
<div class="page">Главная / Добро пожаловать в панель администратора!</div>
<form id="navigation_row_block" class="navigation_input_block">
<input type="hidden" name="universityId" value="6">
<input type="text" name="searchString" class="navigation_input" placeholder="Глобальный поиск..." value="@Model.searchString">
<input type="image" src="~/img/search.svg" alt="search" class="navigation_search">
</form>
</div>
<div class="row flex_row">
@{
if (Model.indexes.Count != 0)
{
foreach (var index in @Model.indexes)
{
<a class="col-2 universe_card universe_card_text">
<img src="@index.LogoUrl" alt="universe" class="universe_icon">
@index.Name
<span>Тип: @index.Type</span>
</a>
}
}
}
</div>
</senction>

View File

@ -0,0 +1,91 @@
<senction class="banks">
<div class="flex_column">
<div class="page">Главная/Институты</div>
<form id="navigation_row_block" class="navigation_input_block">
<input type="hidden" name="universityId" value="6">
<input type="text" name="searchString" class="navigation_input" placeholder="Введите название Вуза">
<input type="image" src="~/logo/search.svg" alt="search" class="navigation_search">
</form>
<div class="hamburger">
<span></span>
<span></span>
<span></span>
</div>
</div>
<div class="row flex_row">
<div class="banks_card_block col-4">
<div class="banks_card">
<div class="banks_title">ЮФУ</div>
<div>
<img src="~/admin/img/logo.png" alt="university" class="banks_img">
</div>
</div>
<div class="banks_description"><span>Лучший Вуз в мире (наверное)</span>Поступайте к нам и получайте востребованное образование</div>
</div>
<div class="banks_card_block col-4">
<div class="banks_card">
<div class="banks_title">ЮФУ</div>
<div>
<img src="~/admin/img/logo.png" alt="university" class="banks_img">
</div>
</div>
<div class="banks_description"><span>Лучший Вуз в мире (наверное)</span>Поступайте к нам и получайте востребованное образование</div>
</div>
<div class="banks_card_block col-4">
<div class="banks_card">
<div class="banks_title">ЮФУ</div>
<div>
<img src="~/img/logo.png" alt="university" class="banks_img">
</div>
</div>
<div class="banks_description"><span>Лучший Вуз в мире (наверное)</span>Поступайте к нам и получайте востребованное образование</div>
</div>
<div class="banks_card_block col-4">
<div class="banks_card">
<div class="banks_title">ЮФУ</div>
<div>
<img src="~/admin/img/logo.png" alt="university" class="banks_img">
</div>
</div>
<div class="banks_description"><span>Лучший Вуз в мире (наверное)</span>Поступайте к нам и получайте востребованное образование</div>
</div>
<div class="banks_card_block col-4">
<div class="banks_card">
<div class="banks_title">ЮФУ</div>
<div>
<img src="~/img/logo.png" alt="university" class="banks_img">
</div>
</div>
<div class="banks_description"><span>Лучший Вуз в мире (наверное)</span>Поступайте к нам и получайте востребованное образование</div>
</div>
<div class="banks_card_block col-4">
<div class="banks_card">
<div class="banks_title">ЮФУ</div>
<div>
<img src="~/img/logo.png" alt="university" class="banks_img">
</div>
</div>
<div class="banks_description"><span>Лучший Вуз в мире (наверное)</span>Поступайте к нам и получайте востребованное образование</div>
</div>
<div class="banks_card_block col-4">
<div class="banks_card">
<div class="banks_title">ЮФУ</div>
<div>
<img src="~/img/logo.png" alt="university" class="banks_img">
</div>
</div>
<div class="banks_description"><span>Лучший Вуз в мире (наверное)</span>Поступайте к нам и получайте востребованное образование</div>
</div>
<div class="banks_card_block col-4">
<div class="banks_card">
<div class="banks_title">ЮФУ</div>
<div>
<img src="~/img/logo.png" alt="university" class="banks_img">
</div>
</div>
<div class="banks_description"><span>Лучший Вуз в мире (наверное)</span>Поступайте к нам и получайте востребованное образование</div>
</div>
</div>
</senction>

View File

@ -1,3 +1,5 @@
@model CreditsViewModel
@{ @{
ViewData["Title"] = "Home Page"; ViewData["Title"] = "Home Page";
} }
@ -8,8 +10,8 @@
<div class="navigation_fixed"></div> <div class="navigation_fixed"></div>
<div class="navigation_fixed_background"></div> <div class="navigation_fixed_background"></div>
<div class="navigation_banks" id="navigation"> <div class="navigation_banks" id="navigation">
<div class="navigation_banks_univer ">СпбГУ</div> <div class="navigation_banks_univer ">@Model.University.Name</div>
<div class="navigation_banks_speciality ">09.03.04 - Программная инженерия</div> <div class="navigation_banks_speciality ">@Model.Direction.Code - @Model.Direction.Name</div>
<div class="navigation_banks_sort navigation_banks_sort_hamburger"> <div class="navigation_banks_sort navigation_banks_sort_hamburger">
<span></span> <span></span>
<span></span> <span></span>
@ -17,112 +19,51 @@
</div> </div>
</div> </div>
<div class="row row-cols-lg-10 g-5 g-lg-3"> <div class="row row-cols-lg-10 g-5 g-lg-3">
<div class="col-12 navigation_card navigation_bank_text" id="add">
<div style="margin-left: 10px" class="navigation_bank" id="add_text">
Реклама красного банка
</div>
<div class="navigation_credit add_procent">
<span class="navigation_credit_prosent" id="add_text">Потребительский кредит от 13% в год</span>
</div>
</div>
@{
foreach (var offer in Model.Offers)
{
<div data-modal class="col-12 navigation_card navigation_bank_text"> <div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank"> <div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon"> <img src="@offer.BankIconUrl" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span> @offer.BankName&nbsp; <span>на 4 года &nbsp;</span>
</div> </div>
<div class="navigation_credit"> <div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span> <span class="navigation_credit_cost">@float.Round(Model.Direction.PlaceCost / 12 / 3.8f) 000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span> <span class="navigation_credit_prosent">@offer.BankPercent% в год</span>
</div>
</div>
<div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span>
</div>
<div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span>
</div>
</div>
<div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span>
</div>
<div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span>
</div>
</div>
<div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span>
</div>
<div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span>
</div>
</div>
<div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span>
</div>
<div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span>
</div>
</div>
<div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span>
</div>
<div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span>
</div>
</div>
<div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span>
</div>
<div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span>
</div>
</div>
<div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span>
</div>
<div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span>
</div>
</div>
<div data-modal class="col-12 navigation_card navigation_bank_text">
<div class="navigation_bank">
<img src="~/img/icons/alpha.png" alt="navigation" class="navigation_icon">
Альфа Банк <span>на 15 лет</span>
</div>
<div class="navigation_credit">
<span class="navigation_credit_cost">10000 рублей/мес</span>
<span class="navigation_credit_prosent">6% в год</span>
</div> </div>
</div> </div>
}
}
</div> </div>
</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>
<a href="Directions?UniversityId=@Model.University.Id" class="navigation_slid_disable">
<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>
</div> </div>
</div> </div>
<div class="back"> <a href="Directions?UniversityId=@Model.University.Id" class="back">
<img src="~/img/icons/arrow.svg" alt="back" class="back_img"> <img src="~/img/icons/arrow.svg" alt="back" class="back_img">
</div> </a>
</section> </section>
<div class="my_modal"> <div class="my_modal">
<div class="my_modal__dialog"> <div class="my_modal__dialog">
@ -132,20 +73,22 @@
<div class="bank_information"> <div class="bank_information">
<div class="bank_block_img"> <div class="bank_block_img">
<img class="bank_img" src="~/img/icons/alpha.png" alt="bank"> <img class="bank_img" src="~/img/icons/alpha.png" alt="bank">
<div class="bank_procent">10%</div> <div class="bank_procent_text">Процентная ставка</div>
<div class="bank_procent">от 4%</div>
</div> </div>
<div class="bank_name">Альфа Банк</div> <div class="bank_name">Альфа Банк</div>
<div class="bank_form"> <div class="bank_form">
<span>Вам необходимы следующие документы:</span> <span>Документы</span>
<span>Наш процент:</span> <ul>
<span>Ваше направление:</span> <li>Паспорт</li>
<span>Плата в месяц:</span> <li>Справка о доходах</li>
<span>Общая стоимость образования:</span> <li>Дополнительные документы</li>
</ul>
</div> </div>
</div> </div>
<div class="form_btn_block"> <div class="form_btn_block">
<div class="form_btn">Продолжить<img src="~/img/logo/esia.png" alt="esia" class="form_btn_img"></div> <div class="form_btn">Беру!<img src="~/img/esia.png" alt="esia" class="form_btn_img"></div>
</div> </div>
</form> </form>

View File

@ -1,30 +1,55 @@
@model DirectionsViewModel
@{ @{
ViewData["Title"] = "Выбор направления"; ViewData["Title"] = "Выбор направления";
} }
<section class="navigation">
<div class="container container_flex"> <section class="navigation" id="second">
<div class="row"> <div class="container container_flex flex_column">
<div class="navigation_input_block col-md-12"><input type="text" class="navigation_input" placeholder="Введите код или название направления"><img src="/img/logo/search.svg" alt="search" class="navigation_search"></div> <div class="row" id="navigation_row_block">
</div> <div class="navigation_fixed_background"></div>
<div class="row row-cols-lg-1 g-5 g-lg-3"> <div class="navigation_banks col-md-12" id="navigation">
<div class="col-md-12"> <div class="navigation_banks_univer" id="universe">@Model.University.Name</div>
<div class="navigation_info navigation_info_text p-3">09.03.04 - Программная инженерия <span class="navigation_cost">От 5600 в мес.</span> 10+ Банков</div> <form id="navigation_row_block" class="navigation_input_block">
</div> <input type="hidden" name="universityId" value="@Model.University.Id" />
<div class="col-md-12"> <input type="text" name="searchString" class="navigation_input" placeholder="Введите код или название направления" value="@Model.SearchString">
<div class="navigation_info navigation_info_text p-3">09.03.04 - Программная инженерия <span class="navigation_cost">От 5600 в мес.</span> 10+ Банков</div> <input type="image" src="~/img/search.svg" alt="search" class="navigation_search">
</div> </form>
<div class="col-md-12">
<div class="navigation_info navigation_info_text p-3">09.03.04 - Программная инженерия <span class="navigation_cost">От 5600 в мес.</span> 10+ Банков</div>
</div>
<div class="col-md-12">
<div class="navigation_info navigation_info_text p-3">09.03.04 - Программная инженерия <span class="navigation_cost">От 5600 в мес.</span> 10+ Банков</div>
</div>
</div> </div>
</div> </div>
<div id="listDirections" class="row row-cols-lg-1 g-5 g-lg-3">
@{
foreach (var direction in Model.Directions)
{
<a href="Credits?UniversityId=@Model.University.Id&DirectionId=@direction.Id" class="col-md-12 navigation_info_text">
<div class="navigation_info p-3">@direction.Code - @direction.Name<span class="navigation_cost">От @float.Round(direction.PlaceCost/12) т в мес.</span> @direction.PlaceCost т в год</div>
</a>
}
}
</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>
<a href="/" class="back">
<img src="~/img/icons/arrow.svg" alt="back" class="back_img">
</a>
<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,18 +1,19 @@
@model List<University> @model UniversityViewModel
@{ @{
ViewData["Title"] = "Home Page"; ViewData["Title"] = "Доступное образование";
} }
<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/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

@ -0,0 +1,64 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="~/admin/css/style.css">
<link rel="stylesheet" href="~/admin/css/bootstrap-grid.min.css">
<link rel="stylesheet" href="~/admin/css/bootstrap.min.css">
<title>@ViewData["Title"]Админка</title>
</head>
<body>
<div class="admin_menu_block">
<div class="admin_menu">
<div class="admin_logo">
<img class="admin_img" src="~/img/logo.png" alt="logo">
</div>
<a asp-action="Index" class="admin_main admin_button">Главная</a>
<a asp-action="Banks" class="admin_banks admin_button">Банки</a>
<a asp-action="Universities" class="admin_university admin_button">Институты</a>
<a asp-controller="Home" asp-action="Index" class="admin_university admin_button">На сайт</a>
<button class="admin_exit">Выход</button>
</div>
</div>
<!-- <button class="header_login">
Вход через <span class="header_login_text">ЕСИА</span>
</button> -->
@* <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container-fluid">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">PaydayFrontend</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
</ul>
<partial name="_LoginPartial"/>
</div>
</div>
</nav> *@
@* <div class="container"> *@
<main role="main" class="pb-3">
@RenderBody()
</main>
@* </div> *@
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>

View File

@ -0,0 +1,48 @@
/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */
a.navbar-brand {
white-space: normal;
text-align: center;
word-break: break-all;
}
a {
color: #0077cc;
}
.btn-primary {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.border-top {
border-top: 1px solid #e5e5e5;
}
.border-bottom {
border-bottom: 1px solid #e5e5e5;
}
.box-shadow {
box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
}
button.accept-policy {
font-size: 1rem;
line-height: inherit;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
white-space: nowrap;
line-height: 60px;
}

View File

@ -5,24 +5,26 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<title>@ViewData["Title"] - PaydayFrontend</title> <title>@ViewData["Title"] - Доступное Образование</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="~/css/style.css"> <link rel="stylesheet" href="~/css/style.css">
<link rel="stylesheet" href="~/css/bootstrap-grid.min.css"> <link rel="stylesheet" href="~/css/bootstrap-grid.min.css">
<link rel="stylesheet" href="~/css/bootstrap.min.css"> <link rel="stylesheet" href="~/css/bootstrap.min.css">
<link href="https://cdn.jsdelivr.net/npm/@@sweetalert2/theme-bulma@4/bulma.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.js"></script>
@* <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css"/> *@ @* <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css"/> *@
@* <link rel="stylesheet" href="~/PaydayFrontend.styles.css" asp-append-version="true"/> *@ @* <link rel="stylesheet" href="~/PaydayFrontend.styles.css" asp-append-version="true"/> *@
</head> </head>
<body> <body>
<header> <header>
<div class="menu"> <div class="menu">
<div class="menu_hamburger"> @* <div class="menu_hamburger"> *@
<span></span> @* <span></span> *@
<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.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 +49,7 @@
</div> </div>
</div> </div>
</nav> *@ </nav> *@
</header> </header>
@* <div class="container"> *@ @* <div class="container"> *@
<main role="main" class="pb-3"> <main role="main" class="pb-3">
@ -56,7 +59,7 @@
<footer class="border-top footer text-muted"> <footer class="border-top footer text-muted">
<div class="container"> <div class="container">
&copy; 2023 - PaydayFrontend - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a> &copy; 2023 - PaydayFrontend - <a asp-area="" asp-controller="Home" asp-action="Privacy">Конфиденциальность</a>
</div> </div>
</footer> </footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script> <script src="~/lib/jquery/dist/jquery.min.js"></script>

View File

@ -1,3 +1,6 @@
@{ @{
if(Context.Request.Path.StartsWithSegments("/Admin", StringComparison.OrdinalIgnoreCase))
Layout = "_AdminLayout";
else
Layout = "_Layout"; Layout = "_Layout";
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,505 @@
* {
font-family: "Roboto", sans-serif
}
.admin_button {
display: flex;
align-items: center;
justify-content: center;
color: white;
text-align: center;
text-decoration: none;
}
.admin_menu_block {
position: fixed;
z-index: 3;
left: 0px;
min-height: 800px;
width: 220px;
background-color: #fff
}
.fix {
margin-top: 20px;
}
.universe_icon {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
height: 130px;
width: 130px
}
/*.universe_card {*/
/* -moz-user-select: none;*/
/* -webkit-user-select: none;*/
/* -ms-user-select: none;*/
/* user-select: none;*/
/* display: -webkit-box;*/
/* display: -ms-flexbox;*/
/* display: flex;*/
/* -webkit-box-orient: vertical;*/
/* -webkit-box-direction: normal;*/
/* -ms-flex-direction: column;*/
/* flex-direction: column;*/
/* -webkit-box-pack: center;*/
/* -ms-flex-pack: center;*/
/* justify-content: center;*/
/* -ms-flex-line-pack: center;*/
/* align-content: center;*/
/* -webkit-box-align: center;*/
/* -ms-flex-align: center;*/
/* align-items: center;*/
/* margin: 0 30px 20px 0;*/
/* height: 205px;*/
/* width: 205px;*/
/* background-color: #fff;*/
/* border-radius: 44px*/
/*}*/
/*.universe_card:nth-child(6) {*/
/* margin-right: 0px*/
/*}*/
/*.universe_card:nth-child(11) {*/
/* margin-right: 0px*/
/*}*/
/*.universe_card_text {*/
/* text-decoration: none;*/
/*}*/
/*.universe_card:nth-child(6) {*/
/* margin-right: 0px*/
/*}*/
/*.universe_card:nth-child(11) {*/
/* margin-right: 0px*/
/*}*/
/*.universe_card_text {*/
/* color: #2a2a2a;*/
/* font-size: 24px;*/
/* font-style: normal;*/
/* font-weight: 500*/
/*}*/
/*.universe_card_text span {*/
/* color: #50d400;*/
/* font-size: 16px;*/
/* font-style: normal;*/
/* font-weight: 500*/
/*}*/
.admin_menu {
z-index: 1;
height: 360px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-pack: distribute;
justify-content: space-around;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column
}
.admin_img {
width: 100%
}
.admin_logo {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100px;
height: 100px
}
.admin_main {
width: 100%;
height: 61px;
background-color: #25a991;
border: 0
}
.admin_banks {
width: 100%;
height: 61px;
background-color: #4cb853;
border: 0
}
.admin_university {
width: 100%;
height: 61px;
background-color: #4cb877;
border: 0
}
.admin_exit {
position: absolute;
bottom: 45px;
width: 100%;
height: 61px;
background-color: #4cb877;
border: 0
}
.admin_team_name {
text-align: center
}
.hamburger {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: absolute;
right: 50px;
top: 20px;
height: 50px;
width: 50px;
background-color: #20d37d;
border-radius: 50%
}
.second_line {
position: absolute;
background-color: #fff;
height: 3px;
width: 25px
}
.first_line {
position: absolute;
rotate: 90deg;
background-color: #fff;
height: 3px;
width: 25px
}
.banks {
min-height: 850px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-ms-flex-line-pack: justify;
align-content: space-between;
padding-left: 221px;
background-color: #ececec
}
.banks_description {
color: var(--primary-color, #7749F8);
font-size: 16px;
font-style: normal;
font-weight: 400
}
.banks span {
color: var(--primary-color, #7749F8);
font-size: 20px;
font-style: normal;
font-weight: 600
}
.banks .page {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 300px;
text-align: center;
height: 54px;
margin-left: 30px;
margin-top: 30px;
width: 200px;
color: #000;
font-size: 18px;
font-style: normal;
font-weight: 500
}
.banks_search_block {
margin-left: 30px;
height: 46px;
width: 35%;
margin-top: 22px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between
}
.banks_search {
width: 100%
}
.banks_card_block {
position: relative;
border-bottom: 1px solid var(--gray-300, #DEE2E6);
background: var(--gray-100, #F8F9FA);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: start;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
margin: 35px 0 25px 30px;
width: 350px;
min-height: 300px;
border-radius: 15px;
border: 1px solid #7749f8
}
.banks_title {
color: var(--gray-900, #212529);
font-size: 20px;
font-style: normal;
font-weight: 600
}
.banks_card {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-pack: distribute;
justify-content: space-around;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.banks_img {
height: 50px
}
.banks_description {
padding-left: 20px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-ms-flex-line-pack: center;
align-content: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between
}
#navigation_row_block {
margin: 0 auto;
margin-bottom: 35px;
margin-top: 30px;
width: 90%;
padding-left: 0px;
padding-right: 0px;
height: 60px;
z-index: 1
}
.navigation_input_block {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
position: relative;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 60px;
margin-bottom: 60px;
margin-top: 35px
}
.navigation_input {
padding-left: 20px;
height: 100%;
border-radius: 40px;
display: block;
width: 100%;
border: 0px;
font-size: 20px;
padding-right: 20px
}
.navigation_search {
height: 35px;
width: 35px;
position: absolute;
right: 30px
}
.flex_row {
width: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.flex_column {
position: relative
}
.navigation_card {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-ms-flex-line-pack: center;
align-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
margin-left: 30px;
height: 60px;
width: 880px;
background-color: #fff;
border-radius: 44px
}
.navigation_bank_text {
margin: 6 auto;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
color: #2a2a2a;
font-size: 24px;
font-style: normal;
font-weight: 500
}
.navigation_bank {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.navigation_icon {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
height: 45px;
width: 45px
}
.flex_container_center {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.add_procent {
margin-right: 20px;
width: 120px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between
}
.delete_btn {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
width: 50px;
height: 50px;
background-color: #fff;
border-radius: 50%
}
.delete_btn_img_red {
display: none;
width: 40px
}
.delete_btn_img_black {
width: 40px
}
.delete_btn:hover {
background-color: #ececec
}
.delete_btn:hover .delete_btn_img_black {
display: none
}
.delete_btn:hover .delete_btn_img_red {
display: block
}
/*# sourceMappingURL=style.css.map */

File diff suppressed because one or more lines are too long

View File

@ -55,8 +55,9 @@ header {
} }
.menu_project_name_text { .menu_project_name_text {
text-decoration: none;
color: #20d37d; color: #20d37d;
font-size: 48px; font-size: 3.5vh;
font-style: normal; font-style: normal;
font-weight: 500 font-weight: 500
} }
@ -109,6 +110,21 @@ header {
display: none display: none
} }
.menu_hamburger_active span:nth-child(3) {
margin-top: 12px;
-webkit-transform: translateY(-5px) rotate(45deg);
transform: translateY(-5px) rotate(45deg)
}
.menu_hamburger_active span:nth-child(1) {
margin-top: 12px;
-webkit-transform: translateY(12px) rotate(-45deg);
transform: translateY(12px) rotate(-45deg)
}
.menu_hamburger_active span:nth-child(2) {
display: none
}
.menu_hamburger_active span:nth-child(3) { .menu_hamburger_active span:nth-child(3) {
margin-top: 12px; margin-top: 12px;
-webkit-transform: translateY(-5px) rotate(45deg); -webkit-transform: translateY(-5px) rotate(45deg);
@ -159,6 +175,24 @@ header {
background: -webkit-gradient(linear, left bottom, left top, from(#ECECEC), to(#ECECEC)), #e8e8e8; background: -webkit-gradient(linear, left bottom, left top, from(#ECECEC), to(#ECECEC)), #e8e8e8;
background: linear-gradient(0deg, #ECECEC 0%, #ECECEC 100%), #e8e8e8 background: linear-gradient(0deg, #ECECEC 0%, #ECECEC 100%), #e8e8e8
} }
.flex_column {
flex-direction: column;
}
#navigation_row_block {
width: 100%;
padding-left: 0px;
padding-right: 0px;
height: 60px;
z-index: 1;
}
.universe {
position: relative;
min-height: 700px;
padding: 90px 0 60px 0;
background: -webkit-gradient(linear, left bottom, left top, from(#ECECEC), to(#ECECEC)),#e8e8e8;
background: linear-gradient(0deg, #ECECEC 0%, #ECECEC 100%),#e8e8e8
}
.universe_input_block { .universe_input_block {
display: -webkit-box; display: -webkit-box;
@ -233,6 +267,16 @@ header {
.universe_card_text { .universe_card_text {
text-decoration: none; text-decoration: none;
}
.universe_card:nth-child(6) {
margin-right: 0px
}
.universe_card:nth-child(11) {
margin-right: 0px
}
.universe_card_text {
color: #2a2a2a; color: #2a2a2a;
font-size: 24px; font-size: 24px;
font-style: normal; font-style: normal;
@ -293,7 +337,9 @@ header {
padding: 22px 0 30px 0; padding: 22px 0 30px 0;
margin-top: 72px margin-top: 72px
} }
#second {
padding-top: 40px;
}
.navigation_input_block { .navigation_input_block {
display: -webkit-box; display: -webkit-box;
display: -ms-flexbox; display: -ms-flexbox;
@ -316,7 +362,8 @@ header {
display: block; display: block;
width: 100%; width: 100%;
border: 0px; border: 0px;
font-size: 20px font-size: 20px;
padding-right: 20px;
} }
.navigation_input:focus { .navigation_input:focus {
@ -499,6 +546,7 @@ header {
} }
.navigation_info_text { .navigation_info_text {
text-decoration: none;
color: #545454; color: #545454;
font-size: 20px; font-size: 20px;
font-style: normal; font-style: normal;
@ -608,6 +656,7 @@ header {
} }
.navigation_bank { .navigation_bank {
font-family: "Roboto", sans-serif;
display: -webkit-box; display: -webkit-box;
display: -ms-flexbox; display: -ms-flexbox;
display: flex; display: flex;
@ -648,6 +697,7 @@ header {
} }
.navigation_credit_prosent { .navigation_credit_prosent {
font-family: "Roboto", sans-serif;
padding-left: 33px; padding-left: 33px;
color: #20d37d; color: #20d37d;
font-size: 20px; font-size: 20px;
@ -668,7 +718,7 @@ header {
-webkit-box-align: center; -webkit-box-align: center;
-ms-flex-align: center; -ms-flex-align: center;
align-items: center; align-items: center;
height: 50px; height: 53px; /*TODO: Скрывает последний результат*/
width: 100%; width: 100%;
bottom: 50px bottom: 50px
} }
@ -796,7 +846,10 @@ footer span {
background-color: rgba(0,0,0,0); background-color: rgba(0,0,0,0);
cursor: pointer cursor: pointer
} }
#universe {
width: 15%;
margin-right:10px;
}
.bank_title { .bank_title {
position: absolute; position: absolute;
left: 55px; left: 55px;
@ -848,7 +901,8 @@ footer span {
-webkit-user-select: none; -webkit-user-select: none;
-ms-user-select: none; -ms-user-select: none;
user-select: none; user-select: none;
height: 60% max-height: 80px;
min-height: 50px;
} }
.bank_form { .bank_form {
@ -870,7 +924,23 @@ footer span {
top: 70px; top: 70px;
left: 270px left: 270px
} }
.bank_procent_text {
color: #646464;
font-family: Roboto;
font-size: 20px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-align: center;
}
.bank_procent {
color: #43CA79;
font-family: Roboto;
font-size: 32px;
font-style: normal;
font-weight: 600;
line-height: normal;
}
.form_btn { .form_btn {
display: -webkit-box; display: -webkit-box;
display: -ms-flexbox; display: -ms-flexbox;
@ -884,7 +954,8 @@ footer span {
width: 150px; width: 150px;
background-color: #20d37d; background-color: #20d37d;
border-radius: 20px; border-radius: 20px;
color: #fff color: #fff;
font-size:30px;
} }
.form_btn_img { .form_btn_img {
@ -907,5 +978,21 @@ footer span {
.hide { .hide {
display: none display: none
} }
/*# sourceMappingURL=style.css.map */ /*# sourceMappingURL=style.css.map */
#add {
border-radius: 33px;
background: linear-gradient(50deg, #F72719 1.04%, #FF968E 100%);
}
#add_text {
color: #FFF;
font-family: Roboto;
font-size: 15px;
font-style: normal;
font-weight: 500;
line-height: normal;
text-align: center;
}
.add_img {
margin-right: 3px;
}

File diff suppressed because one or more lines are too long

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#ff0000">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#ff0000">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -0.5 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.2942 7.95881C13.5533 7.63559 13.5013 7.16358 13.178 6.90453C12.8548 6.64549 12.3828 6.6975 12.1238 7.02072L13.2942 7.95881ZM6.811 14.8488L7.37903 15.3385C7.38489 15.3317 7.39062 15.3248 7.39623 15.3178L6.811 14.8488ZM6.64 15.2668L5.89146 15.2179L5.8908 15.2321L6.64 15.2668ZM6.5 18.2898L5.7508 18.2551C5.74908 18.2923 5.75013 18.3296 5.75396 18.3667L6.5 18.2898ZM7.287 18.9768L7.31152 19.7264C7.36154 19.7247 7.41126 19.7181 7.45996 19.7065L7.287 18.9768ZM10.287 18.2658L10.46 18.9956L10.4716 18.9927L10.287 18.2658ZM10.672 18.0218L11.2506 18.4991L11.2571 18.491L10.672 18.0218ZM17.2971 10.959C17.5562 10.6358 17.5043 10.1638 17.1812 9.90466C16.8581 9.64552 16.386 9.69742 16.1269 10.0206L17.2971 10.959ZM12.1269 7.02052C11.8678 7.34365 11.9196 7.81568 12.2428 8.07484C12.5659 8.33399 13.0379 8.28213 13.2971 7.95901L12.1269 7.02052ZM14.3 5.50976L14.8851 5.97901C14.8949 5.96672 14.9044 5.95412 14.9135 5.94123L14.3 5.50976ZM15.929 5.18976L16.4088 4.61332C16.3849 4.59344 16.3598 4.57507 16.3337 4.5583L15.929 5.18976ZM18.166 7.05176L18.6968 6.52192C18.6805 6.50561 18.6635 6.49007 18.6458 6.47532L18.166 7.05176ZM18.5029 7.87264L19.2529 7.87676V7.87676L18.5029 7.87264ZM18.157 8.68976L17.632 8.15412C17.6108 8.17496 17.5908 8.19704 17.5721 8.22025L18.157 8.68976ZM16.1271 10.0203C15.8678 10.3433 15.9195 10.8153 16.2425 11.0746C16.5655 11.3339 17.0376 11.2823 17.2969 10.9593L16.1271 10.0203ZM13.4537 7.37862C13.3923 6.96898 13.0105 6.68666 12.6009 6.74805C12.1912 6.80943 11.9089 7.19127 11.9703 7.60091L13.4537 7.37862ZM16.813 11.2329C17.2234 11.1772 17.5109 10.7992 17.4552 10.3888C17.3994 9.97834 17.0215 9.69082 16.611 9.74659L16.813 11.2329ZM12.1238 7.02072L6.22577 14.3797L7.39623 15.3178L13.2942 7.95881L12.1238 7.02072ZM6.24297 14.359C6.03561 14.5995 5.91226 14.9011 5.89159 15.218L7.38841 15.3156C7.38786 15.324 7.38457 15.3321 7.37903 15.3385L6.24297 14.359ZM5.8908 15.2321L5.7508 18.2551L7.2492 18.3245L7.3892 15.3015L5.8908 15.2321ZM5.75396 18.3667C5.83563 19.1586 6.51588 19.7524 7.31152 19.7264L7.26248 18.2272C7.25928 18.2273 7.25771 18.2268 7.25669 18.2264C7.25526 18.2259 7.25337 18.2249 7.25144 18.2232C7.2495 18.2215 7.24825 18.2198 7.24754 18.2185C7.24703 18.2175 7.24637 18.216 7.24604 18.2128L5.75396 18.3667ZM7.45996 19.7065L10.46 18.9955L10.114 17.536L7.11404 18.247L7.45996 19.7065ZM10.4716 18.9927C10.7771 18.9151 11.05 18.7422 11.2506 18.499L10.0934 17.5445C10.0958 17.5417 10.0989 17.5397 10.1024 17.5388L10.4716 18.9927ZM11.2571 18.491L17.2971 10.959L16.1269 10.0206L10.0869 17.5526L11.2571 18.491ZM13.2971 7.95901L14.8851 5.97901L13.7149 5.04052L12.1269 7.02052L13.2971 7.95901ZM14.9135 5.94123C15.0521 5.74411 15.3214 5.6912 15.5243 5.82123L16.3337 4.5583C15.4544 3.99484 14.2873 4.2241 13.6865 5.0783L14.9135 5.94123ZM15.4492 5.7662L17.6862 7.6282L18.6458 6.47532L16.4088 4.61332L15.4492 5.7662ZM17.6352 7.58161C17.7111 7.6577 17.7535 7.761 17.7529 7.86852L19.2529 7.87676C19.2557 7.36905 19.0555 6.88127 18.6968 6.52192L17.6352 7.58161ZM17.7529 7.86852C17.7524 7.97604 17.7088 8.07886 17.632 8.15412L18.682 9.22541C19.0446 8.87002 19.2501 8.38447 19.2529 7.87676L17.7529 7.86852ZM17.5721 8.22025L16.1271 10.0203L17.2969 10.9593L18.7419 9.15928L17.5721 8.22025ZM11.9703 7.60091C12.3196 9.93221 14.4771 11.5503 16.813 11.2329L16.611 9.74659C15.0881 9.95352 13.6815 8.89855 13.4537 7.37862L11.9703 7.60091Z" fill="#000000"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -0.5 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1,12 +1,4 @@
const menuActive = document.querySelector('.menu');
const hamburgerActive = document.querySelector('.menu_hamburger');
console.log(menuActive);
hamburgerActive.addEventListener('click', el => {
el.currentTarget.classList.toggle('hamburger_active');
menuActive.classList.toggle('menu_active');
})
window.addEventListener('DOMContentLoaded', () => { window.addEventListener('DOMContentLoaded', () => {
function eventModalOpen () { function eventModalOpen () {
const modal = document.querySelector('.my_modal'); const modal = document.querySelector('.my_modal');

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,10 @@
# PayDayCSharpFrontend # PayDayCSharpFrontend
# Docker
```
docker run -d -p 85:80 \
--name PayDayBackend \
--restart=always \
-e TZ=Europe/Moscow \
git.zetcraft.ru/payday/paydayfrontend:main
```