328 lines
7.6 KiB
C#
328 lines
7.6 KiB
C#
using System.Diagnostics;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using VeterinaryClinicBusinessLogics.MailWorker;
|
|
using VeterinaryClinicContracts.BindingModels;
|
|
using VeterinaryClinicContracts.BusinessLogicsContracts;
|
|
using VeterinaryClinicContracts.SearchModels;
|
|
using VeterinaryClinicDataModels.Enums;
|
|
using VeterinaryClinicWebApp.Models;
|
|
|
|
namespace VeterinaryClinicWebApp.Controllers;
|
|
|
|
public class HomeController : Controller
|
|
{
|
|
private readonly ILogger<HomeController> _logger;
|
|
|
|
private readonly IUserLogic _userLogic;
|
|
|
|
private readonly IAnimalLogic _animalLogic;
|
|
|
|
private readonly IReportLogic _reportLogic;
|
|
|
|
private readonly AbstractMailWorker _mailLogic;
|
|
|
|
public HomeController(ILogger<HomeController> logger,
|
|
IUserLogic userLogic,
|
|
IAnimalLogic animalLogic,
|
|
IReportLogic reportLogic,
|
|
AbstractMailWorker mailLogic)
|
|
{
|
|
_logger = logger;
|
|
_userLogic = userLogic;
|
|
_animalLogic = animalLogic;
|
|
_reportLogic = reportLogic;
|
|
_mailLogic = mailLogic;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Äîìàøíÿÿ ñòðàíèöà
|
|
/// </summary>
|
|
[HttpGet]
|
|
public IActionResult Index()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
return Redirect("~/Home/Enter");
|
|
}
|
|
|
|
return View(APIClient.User);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ëè÷íûå äàííûå ïîëüçîâàòåëÿ
|
|
/// </summary>
|
|
[HttpGet]
|
|
public IActionResult Privacy()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
return Redirect("~/Home/Enter");
|
|
}
|
|
|
|
return View(APIClient.User);
|
|
}
|
|
|
|
[HttpPost]
|
|
public void Privacy(string fullname, UserRole role, string phone, string email, string password) {
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(fullname) || string.IsNullOrEmpty(phone) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
|
|
{
|
|
throw new Exception("Ââåäåíû íå âñå äàííûå!");
|
|
}
|
|
|
|
_userLogic.Update(new UserBindingModel
|
|
{
|
|
Id = APIClient.User.Id,
|
|
FullName = fullname,
|
|
Role = role,
|
|
Phone = phone,
|
|
Email = email,
|
|
Password = password
|
|
});
|
|
|
|
APIClient.User.FullName = fullname;
|
|
APIClient.User.Role = role;
|
|
APIClient.User.Phone = phone;
|
|
APIClient.User.Email = email;
|
|
APIClient.User.Password = password;
|
|
|
|
Response.Redirect("Privacy");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Àóòåíòèôèêàöèÿ
|
|
/// </summary>
|
|
[HttpGet]
|
|
public IActionResult Enter()
|
|
{
|
|
if (APIClient.User != null)
|
|
{
|
|
throw new Exception("Âû óæå àâòîðèçîâàëèñü!");
|
|
}
|
|
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
public void Enter(string email, string password)
|
|
{
|
|
if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
|
|
{
|
|
throw new Exception("Ââåäåíû íå âñå äàííûå!");
|
|
}
|
|
|
|
APIClient.User = _userLogic.ReadElement(new UserSearchModel
|
|
{
|
|
Email = email,
|
|
Password = password
|
|
});
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Íåâåðíûé ëîãèí/ïàðîëü");
|
|
}
|
|
|
|
Response.Redirect("Index");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ðåãèñòðàöèÿ
|
|
/// </summary>
|
|
[HttpGet]
|
|
public IActionResult Register()
|
|
{
|
|
if (APIClient.User != null)
|
|
{
|
|
throw new Exception("Âû óæå çàðåãèñòðèðîâàëèñü!");
|
|
}
|
|
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
public void Register(string fullname, UserRole role, string phone, string email, string password)
|
|
{
|
|
if (string.IsNullOrEmpty(fullname) || string.IsNullOrEmpty(phone) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
|
|
{
|
|
throw new Exception("Ââåäåíû íå âñå äàííûå!");
|
|
}
|
|
|
|
_userLogic.Create(new UserBindingModel
|
|
{
|
|
FullName = fullname,
|
|
Role = role,
|
|
Phone = phone,
|
|
Email = email,
|
|
Password = password
|
|
});
|
|
|
|
Response.Redirect("Enter");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Âûéòè èç àêêàóíòà
|
|
/// </summary>
|
|
[HttpGet]
|
|
public void Logout()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
|
|
}
|
|
|
|
APIClient.User = null;
|
|
Response.Redirect("Enter");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ïîëó÷èòü îò÷åò
|
|
/// </summary>
|
|
[HttpGet]
|
|
public IActionResult Reports()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
return Redirect("~/Home/Enter");
|
|
}
|
|
|
|
return View();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Âûâåñòè íà ôîðìó îò÷¸ò
|
|
/// </summary>
|
|
[HttpPost]
|
|
public IActionResult Reports(DateTime dateFrom, DateTime dateTo)
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
|
|
}
|
|
|
|
if (dateFrom == DateTime.MinValue || dateTo == DateTime.MinValue)
|
|
{
|
|
throw new Exception("Ââåäåíû íå âñå äàííûå!");
|
|
}
|
|
|
|
var data = _reportLogic.GetVisitsInfo(new ReportBindingModel
|
|
{
|
|
DateFrom = dateFrom,
|
|
DateTo = dateTo,
|
|
UserId = APIClient.User.Id
|
|
});
|
|
|
|
return View(data);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ñîçäàòü îò÷¸ò â ôîðìàòå Word
|
|
/// </summary>
|
|
[HttpPost]
|
|
public void CreateReportWord()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
|
|
}
|
|
|
|
_reportLogic.SaveAnimalServicesToWordFile(new ReportBindingModel
|
|
{
|
|
FileName = $@"D:\ {DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss")}.docx",
|
|
UserId = APIClient.User.Id
|
|
});
|
|
|
|
Response.Redirect("/Home/Reports");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ñîçäàòü îò÷¸ò â ôîðìàòå Excel
|
|
/// </summary>
|
|
[HttpPost]
|
|
public void CreateReportExcel()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
|
|
}
|
|
|
|
_reportLogic.SaveAnimalServicesToExcelFile(new ReportBindingModel
|
|
{
|
|
FileName = $@"D:\ {DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss")}.xlsx",
|
|
UserId = APIClient.User.Id
|
|
});
|
|
|
|
Response.Redirect("/Home/Reports");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ñîçäàòü îò÷¸ò â ôîðìàòå Pdf
|
|
/// </summary>
|
|
[HttpPost]
|
|
public void CreateReportPdf(DateTime dateFrom, DateTime dateTo)
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
|
|
}
|
|
|
|
if (dateFrom == DateTime.MinValue || dateTo == DateTime.MinValue)
|
|
{
|
|
throw new Exception("Ââåäåíû íå âñå äàííûå!");
|
|
}
|
|
|
|
_reportLogic.SaveVisitsInfoToPdfFile(new ReportBindingModel
|
|
{
|
|
FileName = $@"D:\ {DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss")}.pdf",
|
|
UserId = APIClient.User.Id,
|
|
DateFrom = dateFrom,
|
|
DateTo = dateTo
|
|
});
|
|
|
|
Response.Redirect("/Home/Reports");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Îòïðàâèòü ïî ïî÷òå îò÷¸ò
|
|
/// </summary>
|
|
[HttpPost]
|
|
public void SendReport(IFormFile fileUpload)
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
|
|
}
|
|
|
|
if (fileUpload == null || fileUpload.Length <= 0)
|
|
{
|
|
throw new Exception("Ôàéë íå âûáðàí èëè ïóñò!");
|
|
}
|
|
|
|
// Ïóòü äî ôàéëà
|
|
var uploadPath = @"D:\";
|
|
var fileName = Path.GetFileName(fileUpload.FileName);
|
|
var fullPath = Path.Combine(uploadPath, fileName);
|
|
|
|
_mailLogic.MailSendAsync(new MailSendInfoBindingModel
|
|
{
|
|
MailAddress = APIClient.User.Email,
|
|
Subject = $"{fileName.Split('.')[0]}",
|
|
Text = $"Îò÷¸ò îòïðàâëåí {DateTime.Now}",
|
|
Path = fullPath
|
|
});
|
|
|
|
Response.Redirect("/Home/Reports");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Îøèáêà
|
|
/// </summary>
|
|
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
|
public IActionResult Error()
|
|
{
|
|
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
|
|
}
|
|
}
|