Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
################################################################################
# Данный GITIGNORE-файл был автоматически создан Microsoft(R) Visual Studio.
################################################################################

/.vs/TestTaskForVersta/FileContentIndex
/.vs
/backend/CargoDelivery.API/bin/Debug/net8.0
/backend/CargoDelivery.API/.vs
/backend/CargoDelivery.API/obj
/backend/CargoDelivery.Application/bin/Debug/net8.0
/backend/CargoDelivery.Application/obj
/backend/CargoDelivery.Core/bin/Debug/net8.0
/backend/CargoDelivery.Core/obj
/backend/CargoDelivery.DataAccess/bin/Debug/net8.0
/backend/CargoDelivery.DataAccess/obj
/frontend/node_modules
/frontend
/CargoDeliveryFront/CargoDeliveryFront/bin/Debug/net8.0
/CargoDeliveryFront/CargoDeliveryFront/obj
/CargoDeliveryFront/CargoDeliveryFront/wwwroot
/backend.rar
/CargoDeliveryFront.rar
/CargoDeliveryFront/.vs
25 changes: 25 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34701.34
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CargoDeliveryFront", "CargoDeliveryFront\CargoDeliveryFront.csproj", "{6279FCD7-A35A-4F64-9FD5-361F4846FD7A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6279FCD7-A35A-4F64-9FD5-361F4846FD7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6279FCD7-A35A-4F64-9FD5-361F4846FD7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6279FCD7-A35A-4F64-9FD5-361F4846FD7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6279FCD7-A35A-4F64-9FD5-361F4846FD7A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {542CF5FA-BD1E-43C9-9598-CFBD7B9F368B}
EndGlobalSection
EndGlobal
14 changes: 14 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/CargoDeliveryFront.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.7" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ActiveDebugProfile>https</ActiveDebugProfile>
<RazorPage_SelectedScaffolderID>RazorPageScaffolder</RazorPage_SelectedScaffolderID>
<RazorPage_SelectedScaffolderCategoryPath>root/Common/RazorPage</RazorPage_SelectedScaffolderCategoryPath>
</PropertyGroup>
</Project>
13 changes: 13 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Models/DatabaseContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
namespace CargoDeliveryFront.Models;

public class DatabaseContext : DbContext
{
public DbSet<Order> Orders { get; set; } = null!;
public DatabaseContext(DbContextOptions<DatabaseContext> options)
: base(options)
{
Database.EnsureCreated();
}
}
19 changes: 19 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Models/Order.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace CargoDeliveryFront.Models;

public class Order
{
public Guid Id { get; set; }
public string OrderNumber { get; set; } = string.Empty;

public string SenderCity { get; set; } = string.Empty;

public string SenderAddress { get; set; } = string.Empty;

public string RecipientCity { get; set; } = string.Empty;

public string RecipientAddress { get; set; } = string.Empty;

public float Weight { get; set; }

public DateTime PickUpDate { get; set; }
}
28 changes: 28 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Pages/Create.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
@page
@model RazorPagesApp.Pages.CreateModel

<h2>Создание нового заказа</h2>
<form method="post">
<p>
<label>Город отправителя</label><br />
<input name="senderCity" type="text"/>
</p>
<p>
<label>Адрес отправителя</label><br />
<input name="senderAddress" type="text" />
</p>
<label>Город получателя</label><br />
<input name="recipientCity" type="text" />
</p>
<label>Адрес получателя</label><br />
<input name="recipientAddress" type="text" />
</p>
<p>
<label>Вес:</label><br />
<input name="weight" type="number" />
</p>
<label>Дата забора груза</label><br />
<input name="pickUpDate" type="datetime-local" />
</p>
<input type="submit" value="Отправить" />
</form>
37 changes: 37 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Pages/Create.cshtml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using CargoDeliveryFront.Models;

namespace RazorPagesApp.Pages
{
[IgnoreAntiforgeryToken]
public class CreateModel : PageModel
{
DatabaseContext context;
[BindProperty]
public Order order { get; set; } = new();
public CreateModel(DatabaseContext db)
{
context = db;
}
public async Task<IActionResult> OnPostAsync()
{
order.OrderNumber = GenerateOrderNumber();
context.Orders.Add(order);
await context.SaveChangesAsync();
return RedirectToPage("Index");
}
Random rng = new Random();

public string GenerateOrderNumber()
{
long orderPart1 = rng.Next(100000, 9999999);
int orderPart2 = rng.Next(1000, 9999);
string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char firstLetter = letters[rng.Next(letters.Length)];
char secondLetter = letters[rng.Next(letters.Length)];
string orderNumber = $"{firstLetter}{secondLetter}-{orderPart1}-{orderPart2}";
return orderNumber;
}
}
}
34 changes: 34 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Pages/Edit.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
@page "{id:Guid}"
@model RazorPagesApp.Pages.EditModel

<h2>Редактирование деталей заказа</h2>

<form method="post">
<input name="id" value="@Model.order?.Id" type="hidden" />
<input name="orderNumber" value="@Model.order?.OrderNumber" type="hidden" />
<p>
<label>Город отправителя</label><br />
<input name="senderCity" value="@Model.order?.SenderCity" />
</p>
<p>
<label>Адрес отправителя</label><br />
<input name="senderAddress" value="@Model.order?.SenderAddress" />
</p>
<p>
<label>Город получателя</label><br />
<input name="recipientCity" value="@Model.order?.RecipientCity" />
</p>
<p>
<label>Адрес получателя</label><br />
<input name="recipientAddress" value="@Model.order?.RecipientAddress" />
</p>
<p>
<label>Вес</label><br />
<input name="weight" value="@Model.order?.Weight" type="number" />
</p>
<p>
<label>Дата забора груза</label><br />
<input name="pickUpDate" value="@Model.order?.PickUpDate" type="datetime-local" />
</p>
<input type="submit" value="Сохранить" />
</form>
33 changes: 33 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Pages/Edit.cshtml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using CargoDeliveryFront.Models;

namespace RazorPagesApp.Pages
{
[IgnoreAntiforgeryToken]
public class EditModel : PageModel
{
DatabaseContext context;
[BindProperty]
public Order? order { get; set; }

public EditModel(DatabaseContext db)
{
context = db;
}
public async Task<IActionResult> OnGetAsync(Guid id)
{
order = await context.Orders.FindAsync(id);

if (order == null) return NotFound();

return Page();
}
public async Task<IActionResult> OnPostAsync()
{
context.Orders.Update(order!);
await context.SaveChangesAsync();
return RedirectToPage("Index");
}
}
}
42 changes: 42 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Pages/Index.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
@page
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@model CargoDeliveryFront.Pages.IndexModel
<h2>Принятые заказы</h2>
<p><a href="/Create">Создать заказ</a></p>
<table>
<tr>
<th>Номер заказа</th>
<th>Город отправителя</th>
<th>Адрес отправителя</th>
<th>Город получателя</th>
<th>Адрес получателя</th>
<th>Вес</th>
<th>Дата забора груза</th>
</tr>
@foreach (var order in Model.Orders)
{
<tr>
<td>@order.OrderNumber</td>
<td>@order.SenderCity</td>
<td>@order.SenderAddress</td>
<td>@order.RecipientCity</td>
<td>@order.RecipientAddress</td>
<td>@order.Weight</td>
<td>@order.PickUpDate</td>
<td>
<form method="get">
<a asp-page="Read" asp-route-id="@order.Id">Просмотр заказа</a>
</form>
</td>
<td>
<form method="post">
<a asp-page="Edit" asp-route-id="@order.Id">Редактировать</a>
<button type="submit" asp-page-handler="delete" asp-route-id="@order.Id">
Удалить
</button>
</form>
</td>

</tr>
}
</table>
34 changes: 34 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Pages/Index.cshtml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using CargoDeliveryFront.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;

namespace CargoDeliveryFront.Pages
{
public class IndexModel : PageModel
{
DatabaseContext context;
public List<Order> Orders { get; private set; } = new();
public IndexModel(DatabaseContext db)
{
context = db;
}
public void OnGet()
{
Orders = context.Orders.AsNoTracking().ToList();
}
public async Task<IActionResult> OnPostDeleteAsync(Guid id)
{
var order = await context.Orders.FindAsync(id);

if (order != null)
{
context.Orders.Remove(order);
await context.SaveChangesAsync();
}

return RedirectToPage();
}
}
}
37 changes: 37 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Pages/Read.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
@page "{id:Guid}"
@model RazorPagesApp.Pages.ReadModel

<h2>Просмотр заказа</h2>

<form method="get">
<input name="id" value="@Model.order.Id" type="hidden" />
<p>
<label>Номер заказа</label><br />
<input name="orderNumber" value="@Model.order.OrderNumber" />
</p>
<p>
<label>Город отправителя</label><br />
<input name="senderCity" value="@Model.order?.SenderCity" />
</p>
<p>
<label>Адрес отправителя</label><br />
<input name="senderAddress" value="@Model.order.SenderAddress" />
</p>
<p>
<label>Город получателя</label><br />
<input name="recipientCity" value="@Model.order.RecipientCity" />
</p>
<p>
<label>Адрес получателя</label><br />
<input name="recipientAddress" value="@Model.order.RecipientAddress" />
</p>
<p>
<label>Вес</label><br />
<input name="weight" value="@Model.order.Weight" type="number" />
</p>
<p>
<label>Дата забора груза</label><br />
<input name="pickUpDate" value="@Model.order.PickUpDate" type="text" />
</p>
<input type="submit" value="Закрыть" />
</form>
29 changes: 29 additions & 0 deletions CargoDeliveryFront/CargoDeliveryFront/Pages/Read.cshtml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using CargoDeliveryFront.Models;

namespace RazorPagesApp.Pages
{
[IgnoreAntiforgeryToken]
public class ReadModel : PageModel
{
DatabaseContext context;
[BindProperty]
public Order? order { get; set; }

public ReadModel(DatabaseContext db)
{
context = db;
}
public async Task<IActionResult> OnGetAsync(Guid id)
{
order = await context.Orders.FindAsync(id);

if (order == null) return NotFound();

return Page();

}

}
}
Loading