Witam,
Chcę zrobić aplikację która pobiera w formularzu wartość od klienta, po czym wyświetla odpowiedni komunikat. Każde zapytanie do serwera musi być zapisane do bazy danych(lokalnej). Taki jeden zapis musi posiadać wartość wpisaną do formularza, ip klienta , oraz komunikat od serwera.
Czy mógłby ktoś polecić jakiś poradnik jak wpisać do bazy danych wartość? Czyli najlepiej całą obsługę(połączenie, wpisanie(insert)).
Szukałem trochę w internecie, ale każdy film się różni i już sam nie wiem który sposób mam wybrać.
Wklejam poniżej mój kod, abyście widzieli czy to ma sens. Dodam że dopiero się uczę i mogą być tu głupoty.
Kontroler:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Zadanie1CEZ.Models;
using static Microsoft.AspNetCore.Hosting.Internal.HostingApplication;
namespace Zadanie1CEZ.Controllers
{
public class FizzBuzzController : Controller
{
[HttpGet]
public IActionResult Index()
{
return View();
}
//pobranie ip od klienta
public string ip()
{
var remoteIpAddress = Request.HttpContext.Connection.RemoteIpAddress.ToString();
return remoteIpAddress;
}
[HttpPost]
public string Index(FizzBuzzRequestDTO request)
{
var service = new FizzBuzzService();
request.ip = ip();
FizzBuzzResoultDTO resoult = service.Validate(request);
return resoult.Tekst+" || Twoje IP to: "+ip();
}
}
}
Widok (index):
@model Zadanie1CEZ.Models.FizzBuzzRequestDTO
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
@using (Html.BeginForm())
{
<p>Podaj liczbę: @Html.TextBoxFor(x=>x.Tekst)</p>
<input type="submit" value="Wyślij liczbę" />
}
</body>
</html>
DTO:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Zadanie1CEZ.Models
{
public class FizzBuzzRequestDTO
{
public string Tekst { get; set; }
public string ip { get; set; }
}
public class FizzBuzzResoultDTO
{
public FizzBuzzResoultDTO(string tekst)
{
Tekst = tekst;
}
public string Tekst { get; }
}
}
Logika:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Zadanie1CEZ.Models
{
public class FizzBuzzService
{
public FizzBuzzResoultDTO Validate(FizzBuzzRequestDTO request)
{
int konw;
bool succes = Int32.TryParse(request.Tekst, out konw);
if (!succes)
{
return new FizzBuzzResoultDTO("Wprowadzono nieprawidłowy format danych. Podaj liczbę całkowitą");
}
int liczba = Convert.ToInt32(request.Tekst);
if (liczba > 100 || liczba < 1)
{
return new FizzBuzzResoultDTO("Liczba nie jest z określonego przedziału, czyli <1,100>");
}
if ((liczba % 3) == 0 && (liczba % 5) == 0)
{
if (liczba % 7 == 0)
{
return new FizzBuzzResoultDTO("FizzBuzzWizz");
}
return new FizzBuzzResoultDTO("FizzBuzz");
}
if((liczba % 3) == 0 && (liczba % 7) == 0)
{
return new FizzBuzzResoultDTO("FizzWizz");
}
if((liczba % 7) == 0 && (liczba % 5) == 0)
{
return new FizzBuzzResoultDTO("BuzzWizz");
}
if (liczba % 7 == 0)
{
return new FizzBuzzResoultDTO("Wizz");
}
if ((liczba % 3) == 0)
{
return new FizzBuzzResoultDTO("Fizz");
}
if ((liczba % 5) == 0)
{
return new FizzBuzzResoultDTO("Buzz");
}
return new FizzBuzzResoultDTO(request.Tekst+" Nie podzielna przez 3, 5 oraz 7");
}
}
}