204 lines
11 KiB
C#
204 lines
11 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Newtonsoft.Json.Linq;
|
|
using System.Linq.Expressions;
|
|
using System.Reflection.Metadata;
|
|
using System.Text.Json;
|
|
using TIAM.Core.Enums;
|
|
using TIAM.Database.DataLayers;
|
|
using TIAM.Database.DataLayers.Admins;
|
|
using TIAM.Database.DataLayers.TransferDestinations;
|
|
using TIAM.Database.DataLayers.Users;
|
|
using TIAM.Database.DbContexts;
|
|
using TIAM.Entities.Transfers;
|
|
using TIAM.Entities.Users;
|
|
using TIAMWebApp.Shared.Application.Models;
|
|
using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels;
|
|
using TIAMWebApp.Shared.Application.Models.PageModels;
|
|
|
|
namespace TIAMWebApp.Server.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("api/v1/[controller]")]
|
|
public class TransferDataAPIController : ControllerBase
|
|
{
|
|
//private static readonly TransferDestination[] Names = new TransferDestination[]
|
|
//{
|
|
// /*"Castle of Buda", "Hungarian National Museum", "Parliament of Hungary", "Heroes square", "Gellert Hill", "Margaret Island"*/
|
|
// new() { DestinationId = 1, DestinationName = "Airport", DestinationDescription = "International airport of Budapest", DestinationLatitude = 42.234444f, DestinationLongitude = 39.100010f },
|
|
// new() { DestinationId = 2, DestinationName = "Castle of Buda", DestinationDescription = "International airport of Budapest", DestinationLatitude = 42.234444f, DestinationLongitude = 39.100010f },
|
|
// new() { DestinationId = 3, DestinationName = "Hungarian National Museum", DestinationDescription = "International airport of Budapest", DestinationLatitude = 42.234444f, DestinationLongitude = 39.100010f },
|
|
// new() { DestinationId = 4, DestinationName = "Parliament of Hungary", DestinationDescription = "International airport of Budapest", DestinationLatitude = 42.234444f, DestinationLongitude = 39.100010f },
|
|
// new() { DestinationId = 5, DestinationName = "Heroes square", DestinationDescription = "International airport of Budapest", DestinationLatitude = 42.234444f, DestinationLongitude = 39.100010f },
|
|
// new() { DestinationId = 6, DestinationName = "Gellert Hill", DestinationDescription = "International airport of Budapest", DestinationLatitude = 42.234444f, DestinationLongitude = 39.100010f },
|
|
// new() { DestinationId = 6, DestinationName = "Margaret Island", DestinationDescription = "International airport of Budapest", DestinationLatitude = 42.234444f, DestinationLongitude = 39.100010f }
|
|
|
|
//};
|
|
|
|
private readonly TransferDestinationDal _transferDestinationDal;
|
|
private readonly AdminDal _adminDal;
|
|
private readonly ILogger<TransferDataAPIController> _logger;
|
|
|
|
public TransferDataAPIController(ILogger<TransferDataAPIController> logger, TransferDestinationDal transferDestinationDal, AdminDal adminDal)
|
|
{
|
|
_logger = logger;
|
|
_transferDestinationDal = transferDestinationDal;
|
|
_adminDal = adminDal;
|
|
}
|
|
|
|
[AllowAnonymous]
|
|
[HttpGet]
|
|
[Route(APIUrls.GetTransferDestinationsRouteName)]
|
|
public async Task<IEnumerable<TransferDestination>> GetTransferDestinations()
|
|
{
|
|
return await _transferDestinationDal.Context.TransferDestinations.ToListAsync();
|
|
}
|
|
|
|
[AllowAnonymous]
|
|
[HttpGet]
|
|
[Route("GetTransferDestinationByCoordinates")]
|
|
public async Task<TransferDestination?> GetTransferDestinationByCoordinates(double latitude, double longitude)
|
|
{
|
|
return null;// await _transferDestinationDal.Context.TransferDestinations.FirstOrDefaultAsync(x => x.Latitude == latitude && x.Longitude == longitude);
|
|
}
|
|
|
|
[AllowAnonymous]
|
|
[HttpGet]
|
|
[Route("GetTransferDestinationByAddress")]
|
|
public async Task<TransferDestination?> GetTransferDestinationByAddress(string address)
|
|
{
|
|
return null;//await _transferDestinationDal.Context.TransferDestinations.FirstOrDefaultAsync(x => x.Address == address);
|
|
}
|
|
|
|
[AllowAnonymous]
|
|
[HttpPost]
|
|
[Route(APIUrls.CreateTransferDestinationRouteName)]
|
|
public async Task<IActionResult> CreateTransferDestination([FromBody] JsonElement serializedTransferDestinationModel)
|
|
{
|
|
Console.WriteLine("CreateTransferDestination called!");
|
|
if (string.IsNullOrEmpty(serializedTransferDestinationModel.GetRawText()))
|
|
{
|
|
return BadRequest("SerializedTramsferDestinationWizardModel is required");
|
|
}
|
|
else
|
|
{
|
|
TransferDestination? transferDestination = JObject.Parse(serializedTransferDestinationModel.GetRawText()).ToObject<TransferDestination>();
|
|
|
|
if (transferDestination != null)
|
|
{
|
|
|
|
var id = Guid.NewGuid();
|
|
//TransferDestination transferDestination = new TransferDestination(id, transferDestinationModel.Name, transferDestinationModel.Description, transferDestinationModel.AddressString);
|
|
|
|
|
|
if (string.IsNullOrEmpty(transferDestination.Name) || string.IsNullOrEmpty(transferDestination.AddressString))
|
|
{
|
|
return BadRequest("Invalid request");
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine($"TransferDestination to be created: {id}");
|
|
Console.WriteLine($"TransferDestination to be created: {transferDestination.AddressId}");
|
|
Console.WriteLine($"TransferDestination to be created: {transferDestination.Name}");
|
|
Console.WriteLine($"TransferDestination to be created: {transferDestination.Price}");
|
|
Console.WriteLine($"TransferDestination to be created: {transferDestination.Price2}");
|
|
Console.WriteLine($"TransferDestination to be created: {transferDestination.Price3}");
|
|
Console.WriteLine($"TransferDestination to be created: {transferDestination.PriceType}");
|
|
Console.WriteLine($"TransferDestination to be created: {transferDestination.AddressString}");
|
|
Console.WriteLine($"TransferDestination to be created: {transferDestination.Description}");
|
|
|
|
//await _transferDestinationDal.Context.TransferDestinations.AddAsync(transferDestination);
|
|
await _adminDal.AddTransferDestinationAsync(transferDestination);
|
|
return Ok(transferDestination);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return BadRequest("Invalid request");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
[AllowAnonymous]
|
|
[HttpPost]
|
|
[Route(APIUrls.UpdateTransferDestinationRouteName)]
|
|
public async Task<IActionResult> UpdateTransferDestination([FromBody]JsonElement serializedTransferDestination)
|
|
{
|
|
Console.WriteLine("UpdateTransferDestination called!");
|
|
if (string.IsNullOrEmpty(serializedTransferDestination.GetRawText()))
|
|
{
|
|
Console.WriteLine("Bad request!");
|
|
return BadRequest("SerializedTramsferDestinationWizardModel is required");
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("Serialized model not empty!");
|
|
TransferDestination? transferDestination = JObject.Parse(serializedTransferDestination.GetRawText()).ToObject<TransferDestination>();
|
|
Console.WriteLine($"TransferDestination to be updated: {serializedTransferDestination.GetRawText()}");
|
|
Console.WriteLine($"TransferDestination to be updated: {transferDestination.AddressString}");
|
|
|
|
|
|
if (transferDestination != null)
|
|
{
|
|
|
|
|
|
//TransferDestination transferDestination = new TransferDestination(id, transferDestinationModel.Name, transferDestinationModel.Description, transferDestinationModel.AddressString);
|
|
|
|
if (transferDestination.Id == Guid.Empty || string.IsNullOrEmpty(transferDestination.Name) || string.IsNullOrEmpty(transferDestination.AddressString))
|
|
{
|
|
Console.WriteLine("Serialized model not empty, but bad request!");
|
|
return BadRequest("Invalid request");
|
|
}
|
|
else
|
|
{
|
|
|
|
Console.WriteLine($"TransferDestination to be updated: {transferDestination.Id}");
|
|
Console.WriteLine($"TransferDestination to be updated new name: {transferDestination.Name}");
|
|
Console.WriteLine($"TransferDestination to be updated new price: {transferDestination.Price}");
|
|
Console.WriteLine($"TransferDestination to be updated new price: {transferDestination.Price2}");
|
|
Console.WriteLine($"TransferDestination to be updated new price: {transferDestination.Price3}");
|
|
Console.WriteLine($"TransferDestination to be updated new priceType: {transferDestination.PriceType}");
|
|
Console.WriteLine($"TransferDestination to be updated new address: {transferDestination.AddressString}");
|
|
Console.WriteLine($"TransferDestination to be updated new description: {transferDestination.Description}");
|
|
|
|
//var dbTransferDestinationJson = _adminDal.GetTransferDestinationJsonById(transferDestination.Id);
|
|
//Console.WriteLine($"TransferDestination JSON to be updated: {dbTransferDestinationJson}");
|
|
|
|
//var dbTransferDestination = JObject.Parse(dbTransferDestinationJson).ToObject<TransferDestination>();
|
|
|
|
//var dbTransferDestination = _adminDal.GetTransferDestinationById(transferDestination.Id, true);
|
|
//if (dbTransferDestination.Id != Guid.Empty)
|
|
//{
|
|
// dbTransferDestination.AddressId = transferDestination.AddressId;
|
|
// dbTransferDestination.Price = transferDestination.Price;
|
|
// dbTransferDestination.PriceType = transferDestination.PriceType;
|
|
// dbTransferDestination.Name = transferDestination.Name;
|
|
// dbTransferDestination.Description = transferDestination.Description;
|
|
// dbTransferDestination.AddressString = transferDestination.AddressString;
|
|
// dbTransferDestination.Address = transferDestination.Address;
|
|
|
|
//}
|
|
|
|
//await _transferDestinationDal.Context.TransferDestinations.AddAsync(transferDestination);
|
|
await _adminDal.UpdateTransferDestinationAsync(transferDestination);
|
|
return Ok(transferDestination);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return BadRequest("Invalid request");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
} |