From c7128f9f2e2a5391ffcd4beff4ee4b2b6b0307da Mon Sep 17 00:00:00 2001 From: Marco Audiffredi Date: Wed, 27 Sep 2023 09:25:09 +0200 Subject: [PATCH] impianti drop down clienti --- Controllers/HomeController.cs | 16 +++- Controllers/ImpiantiController.cs | 128 +++++++++++++++++++++++++ Models/Impianto.cs | 81 ++++++++++++++++ Views/Home/Index.cshtml | 31 ++++++- Views/Impianti/Create.cshtml | 118 +++++++++++++++++++++++ Views/Impianti/Index.cshtml | 149 ++++++++++++++++++++++++++++++ Views/Shared/_Layout.cshtml | 6 +- 7 files changed, 524 insertions(+), 5 deletions(-) create mode 100644 Controllers/ImpiantiController.cs create mode 100644 Models/Impianto.cs create mode 100644 Views/Impianti/Create.cshtml create mode 100644 Views/Impianti/Index.cshtml diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index 6e3fdca..0233074 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Rendering; using NuGet.Common; using System.Diagnostics; using VirtualTask.Models; @@ -24,8 +25,21 @@ namespace VirtualTask.Controllers } else { + List modelList = new List(); + Anag a=new Anag(); + a.ancodice = "0001"; + a.andescri = "Francesco Totti"; + modelList.Add(a); + + Anag b = new Anag(); + b.ancodice = "0002"; + b.andescri = "Alex Del Piero"; + modelList.Add(b); + + + SelectList customers = new SelectList(modelList,"ancodice","andescri"); ViewBag.Token = token; - return View(); + return View(customers); } } diff --git a/Controllers/ImpiantiController.cs b/Controllers/ImpiantiController.cs new file mode 100644 index 0000000..fcad09f --- /dev/null +++ b/Controllers/ImpiantiController.cs @@ -0,0 +1,128 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.Mvc.Rendering; +using Newtonsoft.Json; +using System.Drawing.Printing; +using System.Text; +using VirtualTask.Models; +using X.PagedList; + +namespace VirtualTask.Controllers +{ + public class ImpiantiController : Controller + { + string apiUrl = string.Empty; + string urlBase = string.Empty; + string token = string.Empty; + + HttpClient client; + public ImpiantiController() + { + client = new HttpClient(); + } + + public IActionResult Index(string searchString, int? page = 1) + { + SessionHelper helper = new SessionHelper(this); + token = helper.GetStringValue("tok"); + if (string.IsNullOrEmpty(token)) + return RedirectToAction("Index", "Login"); + + apiUrl = helper.GetStringValue("apiUrl"); + urlBase = apiUrl + "impiantiList"; + urlBase = urlBase + "?token=" + token; + Uri baseAddress = new Uri(urlBase); + client.BaseAddress = baseAddress; + + List modelList = new List(); + HttpResponseMessage response = client.GetAsync(baseAddress).Result; + + if (response.IsSuccessStatusCode) + { + string data = response.Content.ReadAsStringAsync().Result; + modelList = JsonConvert.DeserializeObject>(data); + modelList = modelList.Where(s => !string.IsNullOrEmpty(s.imcodimp)).ToList(); + } + if (!string.IsNullOrEmpty(searchString)) + { + modelList = modelList.Where(s => s.indirizzo.ToUpper().Contains(searchString.ToUpper())).ToList(); + ViewData["CurrentFilter"] = searchString; + } + else + ViewData["CurrentFilter"] = null; + + if (page != null && page < 1) + { + page = 1; + } + + var pageSize = 10; + + var shortLinks = modelList + .OrderByDescending(s => s.imcodimp) + .ToPagedList(page ?? 1, pageSize); + + return View(shortLinks); + + } + + public IActionResult Create() + { + ViewBag.AllStockList = LoadStockitems(); + return View(); + } + + [HttpPost] + public IActionResult Create(Impianto model) + { + SessionHelper helper = new SessionHelper(this); + token = helper.GetStringValue("tok"); + if (string.IsNullOrEmpty(token)) + return RedirectToAction("Index", "Login"); + + apiUrl = helper.GetStringValue("apiUrl"); + urlBase = apiUrl + "impianti/add"; + urlBase = urlBase + "?token=" + token; + Uri baseAddress = new Uri(urlBase); + client.BaseAddress = baseAddress; + + string data = JsonConvert.SerializeObject(model); + StringContent content = new StringContent(data, Encoding.UTF8, "application/json"); + HttpResponseMessage response = client.PostAsync(baseAddress, content).Result; + if (response.IsSuccessStatusCode) + { + return RedirectToAction("Index"); + } + + return View(); + } + + private List LoadStockitems() + { + SessionHelper helper = new SessionHelper(this); + token = helper.GetStringValue("tok"); + apiUrl = helper.GetStringValue("apiUrl"); + urlBase = apiUrl + "anagraficheList"; + urlBase = urlBase + "?token=" + token; + Uri baseAddress = new Uri(urlBase); + client = new HttpClient(); + client.BaseAddress = baseAddress; + List selectItems = new List(); + List modelList = new List(); + HttpResponseMessage response = client.GetAsync(baseAddress).Result; + if (response.IsSuccessStatusCode) + { + string data = response.Content.ReadAsStringAsync().Result; + modelList = JsonConvert.DeserializeObject>(data); + foreach (var role in modelList) + { + SelectListItem listItem = new SelectListItem(); + listItem.Value = role.ancodice; + listItem.Text = role.andescri; + selectItems.Add(listItem); + } + } + return selectItems; + } + } +} diff --git a/Models/Impianto.cs b/Models/Impianto.cs new file mode 100644 index 0000000..49a4314 --- /dev/null +++ b/Models/Impianto.cs @@ -0,0 +1,81 @@ +using System.ComponentModel.DataAnnotations; +using System.Xml.Linq; + +namespace VirtualTask.Models +{ + public class Impianto + { + [Display(Name = "Codice Impianto")] + /// Codice Impianto + public string? imcodimp { get; set; } + + [Display(Name = "Azienda")] + /// Azienda + public string? imcodazi { get; set; } + + [Display(Name = "Descrizione")] + /// Descrizione Impianto + public string? imdescri { get; set; } + + /// Tipo indirizzo (Via, piazza..) + public string? imindiri1 { get; set; } + + /// indirizzo + public string? imindiri2 { get; set; } + + /// numero civico + public int? imindiri3 { get; set; } + + /// sottonumero + public string? imindiri4 { get; set; } + + /// scala + public string? imindiri5 { get; set; } + + /// localita + public string? imlocali { get; set; } + + /// Cap + public string? imcodcap { get; set; } + + /// Comune + public string? imcomune { get; set; } + + /// Provincia + public string? improvin { get; set; } + + [Display(Name = "Cliente")] + /// cliente associato + public string? imultcli { get; set; } + + public string? indirizzo + { + get + { + string ind = string.Empty; + if (!string.IsNullOrEmpty(imindiri1)) + ind= imindiri1.Trim(); + if (!string.IsNullOrEmpty(imindiri2)) + ind = ind +" "+ imindiri2.Trim(); + if(imindiri3!=null) + ind = ind + "," + Convert.ToString( imindiri3); + if (!string.IsNullOrEmpty(imindiri4) && imindiri4.Trim().Length>0) + ind = ind + " Scala " + imindiri4.Trim(); + if (!string.IsNullOrEmpty(imindiri5) && imindiri5.Trim().Length > 0) + ind = ind + " Int " + imindiri5.Trim(); + if (!string.IsNullOrEmpty(imlocali) && imlocali.Trim().Length > 0) + ind = ind + " " + imlocali.Trim(); + if (!string.IsNullOrEmpty(imcodcap) && imcodcap.Trim().Length > 0) + ind = ind+" " + imcodcap.Trim(); + if (!string.IsNullOrEmpty(imcomune) && imcomune.Trim().Length > 0) + ind = ind + " " + imcomune.Trim(); + if (!string.IsNullOrEmpty(improvin) && improvin.Trim().Length > 0) + ind = ind + " " + improvin.Trim(); + + + return ind; + } + } + + } +} diff --git a/Views/Home/Index.cshtml b/Views/Home/Index.cshtml index 2ea1736..56e8740 100644 --- a/Views/Home/Index.cshtml +++ b/Views/Home/Index.cshtml @@ -1,7 +1,36 @@ -@{ +@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers +@model SelectList +@{ ViewData["Title"] = "Home Page"; }

Welcome

+ +
+ +
+
+ + @if (ViewBag.Message != null) + { + + } + +
+ + + + + diff --git a/Views/Impianti/Create.cshtml b/Views/Impianti/Create.cshtml new file mode 100644 index 0000000..ae5da8c --- /dev/null +++ b/Views/Impianti/Create.cshtml @@ -0,0 +1,118 @@ +@model VirtualTask.Models.Impianto + +@{ + ViewData["Title"] = "Create"; +} + +

Create

+ +

Impianto

+
+
+
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + @Html.DropDownListFor(x =>x.imultcli, + (IEnumerable)ViewBag.AllStockList) + + + +
+ +
+ @Html.LabelFor(model => model.imultcli, htmlAttributes: new { @class = "control-label col-md-2" }) +
+ @Html.DropDownListFor(c => c.imultcli, (IEnumerable)ViewBag.AllStockList, null, new { @class = "selectpicker", data_live_search = "true" }) +
+
+ +
+ +
+
+
+
+ + + + + + + + + + + + + +@section Scripts { + @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} +} diff --git a/Views/Impianti/Index.cshtml b/Views/Impianti/Index.cshtml new file mode 100644 index 0000000..b3aae57 --- /dev/null +++ b/Views/Impianti/Index.cshtml @@ -0,0 +1,149 @@ +@model IPagedList +@using X.PagedList; +@using X.PagedList.Mvc.Core; +@using X.PagedList.Web.Common; + +@{ + ViewData["Title"] = "Impianti"; +} + +

Impianti

+ +

+ Create New +

+@using (Html.BeginForm()) +{ +

+ Find by indirizzo: @Html.TextBox("SearchString") + +

+} + + + + + + + +@* + + + + + + + + *@ + + + + + +@foreach (var item in Model) { + + string message = string.Empty; + if (!string.IsNullOrEmpty(item.imindiri1)) + message = message + item.imindiri1; + if (!string.IsNullOrEmpty(item.imindiri2)) + message = " "+message + item.imindiri2; + if (item.imindiri3!=null) + message = "," + message + Convert.ToString( item.imindiri3); + + + + + + + + +@* + + + + + + + + *@ + + + + +} + +
+ Cod. Impianto + + Azienda + + Descrizione + Indirizzo + @Html.DisplayNameFor(model => model.imindiri1) + + @Html.DisplayNameFor(model => model.imindiri2) + + @Html.DisplayNameFor(model => model.imindiri3) + + @Html.DisplayNameFor(model => model.imindiri4) + + @Html.DisplayNameFor(model => model.imindiri5) + + @Html.DisplayNameFor(model => model.imlocali) + + @Html.DisplayNameFor(model => model.imcodcap) + + @Html.DisplayNameFor(model => model.imcomune) + + @Html.DisplayNameFor(model => model.improvin) + + Cod. Cliente +
+ @Html.DisplayFor(modelItem => item.imcodimp) + + @Html.DisplayFor(modelItem => item.imcodazi) + + @Html.DisplayFor(modelItem => item.imdescri) + + @Html.DisplayFor(modelItem => item.indirizzo) + + @Html.DisplayFor(modelItem => item.imindiri1) + + @Html.DisplayFor(modelItem => item.imindiri2) + + @Html.DisplayFor(modelItem => item.imindiri3) + + @Html.DisplayFor(modelItem => item.imindiri4) + + @Html.DisplayFor(modelItem => item.imindiri5) + + @Html.DisplayFor(modelItem => item.imlocali) + + @Html.DisplayFor(modelItem => item.imcodcap) + + @Html.DisplayFor(modelItem => item.imcomune) + + @Html.DisplayFor(modelItem => item.improvin) + + @Html.DisplayFor(modelItem => item.imultcli) + + @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) | + @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) | + @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }) +
+
+ diff --git a/Views/Shared/_Layout.cshtml b/Views/Shared/_Layout.cshtml index 13dc608..e21a5c3 100644 --- a/Views/Shared/_Layout.cshtml +++ b/Views/Shared/_Layout.cshtml @@ -19,9 +19,6 @@