2024-11-03 19:42:19 +04:00
using EventVisitorClientApp.Models ;
using EventVisitorLogic.BindingModels ;
using EventVisitorLogic.Logic ;
using EventVisitorLogic.ViewModels ;
using Microsoft.AspNetCore.Mvc ;
using System ;
using System.Diagnostics ;
2024-11-04 19:46:16 +04:00
using System.Net.NetworkInformation ;
using System.Net ;
using System.Numerics ;
2024-11-03 19:42:19 +04:00
using System.Security.Cryptography.Xml ;
2024-11-04 19:46:16 +04:00
using System.Xml.Linq ;
2024-11-04 20:28:47 +04:00
using Microsoft.Extensions.Logging ;
2024-11-06 03:05:29 +04:00
using static System . Runtime . InteropServices . JavaScript . JSType ;
using DocumentFormat.OpenXml.Office2010.Excel ;
2024-11-03 19:42:19 +04:00
namespace EventVisitorClientApp.Controllers
{
public class HomeController : Controller
{
Random rnd = new Random ( ) ;
public IActionResult Index ( )
{
return View ( ) ;
}
[HttpGet]
public IActionResult Enter ( )
{
return View ( ) ;
}
[HttpPost]
public void Enter ( string login , string password )
{
if ( string . IsNullOrEmpty ( login ) | | string . IsNullOrEmpty ( password ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
2024-11-04 19:46:16 +04:00
APIClient . Client = APIClient . GetRequest < OrganizerViewModel > ( $"api/Organizer/login?login={login}&password={password}" ) ;
2024-11-03 19:42:19 +04:00
if ( APIClient . Client = = null )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> /<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
Response . Redirect ( "Index" ) ;
}
[HttpGet]
public IActionResult Privacy ( )
{
if ( APIClient . Client = = null )
{
return Redirect ( "~Home/Enter" ) ;
}
return View ( APIClient . Client ) ;
}
[HttpPost]
public void Privacy ( string login , string password , string surname , string name , string lastname , string role , string organizationName , string phone )
{
if ( APIClient . Client = = null )
{
throw new Exception ( "<22> <> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ? <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
if ( string . IsNullOrEmpty ( login ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> e-mail" ) ;
}
if ( string . IsNullOrEmpty ( password ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
if ( string . IsNullOrEmpty ( name ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> " ) ;
}
if ( string . IsNullOrEmpty ( surname ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
if ( string . IsNullOrEmpty ( organizationName ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
if ( string . IsNullOrEmpty ( role ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> " ) ;
}
APIClient . PostRequest ( "api/client/updatedata" , new OrganizerBindingModel
{
Id = APIClient . Client . Id ,
Name = name ,
Surname = surname ,
LastName = lastname ,
OrganizationName = organizationName ,
Phone = phone ,
Email = login ,
Password = password
} ) ;
APIClient . Client . Name = name ;
APIClient . Client . Surname = surname ;
APIClient . Client . LastName = lastname ;
APIClient . Client . OrganizationName = organizationName ;
APIClient . Client . Phone = phone ;
APIClient . Client . Email = login ;
APIClient . Client . Password = password ;
Response . Redirect ( "Index" ) ;
}
[HttpGet]
public IActionResult Register ( )
{
return View ( ) ;
}
[HttpPost]
2024-11-05 23:50:08 +04:00
public void Register ( string login , string password , string surname , string name , string lastname , string organizationName , string phone , string code )
2024-11-03 19:42:19 +04:00
{
if ( string . IsNullOrEmpty ( login ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> e-mail" ) ;
}
if ( string . IsNullOrEmpty ( password ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
if ( string . IsNullOrEmpty ( name ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> " ) ;
}
if ( string . IsNullOrEmpty ( surname ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
if ( string . IsNullOrEmpty ( organizationName ) )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
2024-11-05 23:50:08 +04:00
APIClient . PostRequest ( "api/Organizer/Register" , new OrganizerBindingModel
{
Name = name ,
Surname = surname ,
LastName = lastname ,
OrganizationName = organizationName ,
Phone = phone ,
Email = login ,
Password = password
} ) ;
Response . Redirect ( "Enter" ) ;
2024-11-03 19:42:19 +04:00
return ;
}
2024-11-05 23:50:08 +04:00
public IActionResult MyEvents ( )
{
2024-11-04 19:46:16 +04:00
if ( APIClient . Client = = null )
{
return Redirect ( "~/Home/Enter" ) ;
}
2024-11-05 23:50:08 +04:00
return View ( APIClient . GetRequest < List < EventViewModel > > ( $"api/main/GetEventList?OrganizerId={APIClient.Client.Id}" ) ) ;
}
public IActionResult Visitors ( int id )
{
if ( APIClient . Client = = null )
{
return Redirect ( "~/Home/Enter" ) ;
}
return View ( APIClient . GetRequest < List < VisitorViewModel > > ( $"api/main/GetVisitorList?EventId={id}" ) ) ;
2024-11-03 19:42:19 +04:00
}
2024-11-05 23:50:08 +04:00
2024-11-03 19:42:19 +04:00
public IActionResult CreateEvent ( )
2024-11-05 23:50:08 +04:00
{
2024-11-04 19:46:16 +04:00
if ( APIClient . Client = = null )
{
return Redirect ( "~/Home/Enter" ) ;
}
return View ( ) ;
2024-11-05 23:50:08 +04:00
}
2024-11-04 19:46:16 +04:00
2024-11-05 23:50:08 +04:00
public IActionResult ViewEvent ( int id )
{
if ( APIClient . Client = = null )
{
return Redirect ( "~/Home/Enter" ) ;
}
2024-11-04 19:46:16 +04:00
2024-11-05 23:50:08 +04:00
var eventDetails = APIClient . GetRequest < EventViewModel > ( $"api/main/GetEvent?EventId={id}" ) ;
2024-11-04 19:46:16 +04:00
2024-11-05 23:50:08 +04:00
return View ( eventDetails ) ;
}
2024-11-05 14:09:00 +04:00
2024-11-05 23:50:08 +04:00
public IActionResult RegistrationOnEvent ( int id )
{
var eventDetails = APIClient . GetRequest < EventViewModel > ( $"api/main/GetEvent?EventId={id}" ) ;
2024-11-05 14:09:00 +04:00
2024-11-05 23:50:08 +04:00
return View ( eventDetails ) ;
}
public IActionResult ResultRegistration ( )
2024-11-05 14:09:00 +04:00
{
return View ( ) ;
}
2024-11-05 23:50:08 +04:00
[HttpPost]
public void RegistrationOnEvent ( int id , string name , string phone , string email , DateTime dayBirth )
{
var eventDetails = APIClient . GetRequest < EventViewModel > ( $"api/main/GetEvent?EventId={id}" ) ;
if ( eventDetails ! = null & & eventDetails . FreePlaces > 0 )
{
int updatedFreePlaces = eventDetails . FreePlaces - 1 ;
APIClient . PostRequest ( "api/main/registrationonevent" , new VisitorBindingModel
{
Name = name ,
Phone = phone ,
Email = email ,
DayBirth = dayBirth . ToUniversalTime ( ) ,
EventId = id ,
Status = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> "
} ) ;
// 4. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
APIClient . PostRequest ( "api/main/updateevent" , new EventBindingModel
{
Id = id ,
Name = eventDetails . Name ,
Description = eventDetails . Description ,
Type = eventDetails . Type ,
ContactPhone = eventDetails . ContactPhone ,
Address = eventDetails . Address ,
City = eventDetails . City ,
Status = eventDetails . Status ,
ContactEmail = eventDetails . ContactEmail ,
TimeEnd = eventDetails . TimeEnd . ToUniversalTime ( ) ,
TimeStart = eventDetails . TimeStart . ToUniversalTime ( ) ,
Date = eventDetails . Date . ToUniversalTime ( ) ,
CountVisitors = eventDetails . CountVisitors ,
OrganizerId = eventDetails . OrganizerId ,
Link = eventDetails . Link ,
FreePlaces = updatedFreePlaces
} ) ;
2024-11-06 03:05:29 +04:00
APIClient . PostRequest ( "api/main/SendToMail" , new MailSendInfoBindingModel
{
MailAddress = email ,
Subject = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ,
Text = "<22> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " + eventDetails . Name + ", <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " + eventDetails . TimeStart + ". <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : " + eventDetails . Address + " <20> . " + eventDetails . City + ".\n" + "<22> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : " + eventDetails . ContactPhone + " <20> <> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> : " + eventDetails . ContactEmail + ".\n" + "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> !"
} ) ;
Response . Redirect ( "ResultRegistration" ) ;
2024-11-05 23:50:08 +04:00
}
else
{
Response . Redirect ( "NoFreePlaces" ) ;
}
}
2024-11-05 14:09:00 +04:00
2024-11-04 19:46:16 +04:00
[HttpPost]
public void CreateEvent ( string name , string description , string type , string phone , string email , string address , string city , string status , int count , DateTime timestart , DateTime timeend )
{
if ( APIClient . Client = = null )
{
throw new Exception ( "<22> <> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ? <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
2024-11-05 14:09:00 +04:00
string eventId = Guid . NewGuid ( ) . ToString ( ) ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
string registrationLink = $"https://localhost:7186/registrationonevent?EventId={eventId}" ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2024-11-04 19:46:16 +04:00
APIClient . PostRequest ( "api/main/createevent" , new EventBindingModel
{
Name = name ,
Description = description ,
Type = type ,
ContactPhone = phone ,
Address = address ,
City = city ,
Status = status ,
ContactEmail = email ,
TimeEnd = timeend . ToUniversalTime ( ) ,
TimeStart = timestart . ToUniversalTime ( ) ,
Date = DateTime . Now . ToUniversalTime ( ) ,
CountVisitors = count ,
FreePlaces = count ,
2024-11-04 20:28:47 +04:00
OrganizerId = APIClient . Client . Id ,
2024-11-05 14:09:00 +04:00
Link = registrationLink
2024-11-04 19:46:16 +04:00
} ) ;
Response . Redirect ( "MyEvents" ) ;
}
public IActionResult DeleteEvent ( int id )
{
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
if ( APIClient . Client = = null )
{
return Redirect ( "~/Home/Enter" ) ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
APIClient . PostRequest ( $"api/main/DeleteEvent" , new EventBindingModel { Id = id } ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
return RedirectToAction ( "MyEvents" ) ;
}
public IActionResult UpdateEvent ( int id )
{
if ( APIClient . Client = = null )
{
return Redirect ( "~/Home/Enter" ) ;
}
var eventDetails = APIClient . GetRequest < EventViewModel > ( $"api/main/GetEvent?EventId={id}" ) ;
return View ( eventDetails ) ;
}
2024-11-06 03:05:29 +04:00
public IActionResult SendMessage ( int id )
{
if ( APIClient . Client = = null )
{
return Redirect ( "~/Home/Enter" ) ;
}
var eventDetails = APIClient . GetRequest < EventViewModel > ( $"api/main/GetEvent?EventId={id}" ) ;
return View ( eventDetails ) ;
}
2024-11-04 20:28:47 +04:00
2024-11-04 19:46:16 +04:00
[HttpPost]
public void UpdateEvent ( int id , string name , string description , string type , string phone , string email , string address , string city , string status , int count , DateTime timestart , DateTime timeend )
{
if ( APIClient . Client = = null )
{
throw new Exception ( "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
APIClient . PostRequest ( "api/main/UpdateEvent" , new EventBindingModel
{
Id = id ,
Name = name ,
Description = description ,
Type = type ,
ContactPhone = phone ,
Address = address ,
City = city ,
Status = status ,
ContactEmail = email ,
TimeEnd = timeend . ToUniversalTime ( ) ,
TimeStart = timestart . ToUniversalTime ( ) ,
Date = DateTime . Now . ToUniversalTime ( ) ,
CountVisitors = count ,
OrganizerId = APIClient . Client . Id
} ) ;
Response . Redirect ( "MyEvents" ) ;
2024-11-03 19:42:19 +04:00
}
2024-11-06 03:05:29 +04:00
public IActionResult GetWordFile ( )
{
return new PhysicalFileResult ( "F:\\EventVisitor\\wordfile.docx" , "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ) ;
}
public IActionResult GetExcelFile ( )
{
return new PhysicalFileResult ( "F:\\EventVisitor\\excelfile.xlsx" , "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ) ;
}
//[HttpPost]
//public void ReportWord(int[] Ids, int id)
//{
// if (APIClient.Client == null)
// {
// throw new Exception("<22> <> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ? <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ");
// }
// List<VisitorViewModel> registeredVisitorsIds = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
// foreach (var item in Ids)
// {
// res.Add(item);
// }
// APIClient.PostRequest("api/main/createreporttowordfile", new ReportVisitorsBindingModel
// {
// Ids = res,
// FileName = "F:\\EventVisitor\\wordfile.docx"
// });
// Response.Redirect("GetWordFile");
//}
2024-11-03 19:42:19 +04:00
}
}