Guest User

Untitled

a guest
Mar 5th, 2019
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. @using Magazzino.Domain.Entities
  2. @model Magazzino.WebUI.Models.CarrelloViewModel
  3.  
  4. @{
  5. ViewBag.Title = "Carrello";
  6. }
  7.  
  8. <h2>Carrello</h2>
  9.  
  10. <table class="table carrello">
  11. <thead>
  12. <tr>
  13. <th>Categoria</th>
  14. <th>Marca</th>
  15. <th>Modello</th>
  16. <th>Colore</th>
  17. <th>Note</th>
  18. <th>Quantità</th>
  19. </tr>
  20. </thead>
  21. <tbody>
  22. @foreach (Articolo articolo in Model.Carrello.Articoli)
  23. {
  24. <tr>
  25. <td class="text-left">@articolo.Item.Categoria</td>
  26. <td class="text-left">@articolo.Item.Marca</td>
  27. <td class="text-left">@articolo.Item.Modello</td>
  28. <td class="text-left">@articolo.Item.Colore</td>
  29. <td class="text-left">@articolo.Item.Note</td>
  30. <td class="carrello-qta">
  31. <div class="qtaAggiungi btn btn-success" data-action-url="@Url.Action("AumentaODiminuisci", "Carrello")" data-item-marca="@articolo.Item.Marca" data-item-modello="@articolo.Item.Modello">+</div>
  32. <input class="form-control" type="text" data-item-marca="@articolo.Item.Marca" data-item-modello="@articolo.Item.Modello" value="@articolo.Qta" name="Qta" />
  33. <div class="qtaDiminuisci btn btn-success" data-action-url="@Url.Action("AumentaODiminuisci", "Carrello")" data-item-marca="@articolo.Item.Marca" data-item-modello="@articolo.Item.Modello">-</div>
  34. </td>
  35. </tr>
  36. }
  37. </tbody>
  38. </table>
  39.  
  40. <div class="text-center">
  41. <a class="btn btn-primary" href="@Model.ReturnUrl">Prosegui la consultazione</a>
  42. </div>
  43.  
  44. public class CarrelloViewModel
  45. {
  46. public Carrello Carrello { get; set; }
  47. public string ReturnUrl { get; set; }
  48. }
  49.  
  50. public class Carrello
  51. {
  52. private List<Articolo> ElencoArticoli = new List<Articolo>();
  53.  
  54. public void AggiungiArticolo(Item item, int qta)
  55. {
  56. Articolo articolo = ElencoArticoli.Where(i => i.Item == item).FirstOrDefault();
  57.  
  58. if (articolo == null)
  59. {
  60. ElencoArticoli.Add(new Articolo { Item = item, Qta = qta });
  61. }
  62. }
  63.  
  64. public void RimuoviArticolo(Item item)
  65. {
  66. ElencoArticoli.RemoveAll(i => i.Item == item);
  67. }
  68.  
  69. public void CancellaTutto()
  70. {
  71. ElencoArticoli.Clear();
  72. }
  73.  
  74. public void ModificaArticolo(Item item, int qta)
  75. {
  76. Articolo articolo = ElencoArticoli.Where(i => i.Item == item).FirstOrDefault();
  77.  
  78. if (articolo == null) throw new ArgumentOutOfRangeException("L'articolo non è presente nel carrello");
  79. articolo.Qta = qta;
  80. }
  81.  
  82. public void AumentaODiminuisciArticolo(Item item, int qta)
  83. {
  84. Articolo articolo = ElencoArticoli.Where(i => i.Item == item).FirstOrDefault();
  85.  
  86. if (articolo == null) throw new ArgumentOutOfRangeException("L'articolo non è presente nel carrello");
  87. articolo.Qta += qta;
  88. }
  89.  
  90. public List<Articolo> Articoli
  91. {
  92. get { return ElencoArticoli; }
  93. }
  94. }
  95.  
  96. public class Articolo
  97. {
  98. public Item Item { get; set; }
  99. public int Qta { get; set; }
  100. }
  101.  
  102. $('.qtaAggiungi').on('click', function () {
  103. self = $(this);
  104. // get the corrispondent quantity textbox element
  105. var qtaCorrente = $("input[name='Qta']").filter(function () {
  106. return ($(this).data()["itemMarca"] === self.data()["itemMarca"])
  107. && ($(this).data()["itemModello"] === self.data()["itemModello"]);
  108. });
  109.  
  110. var ajaxRequest = $.ajax({
  111. url: $(this).data()["actionUrl"],
  112. type: "post",
  113. data: {
  114. marca: $(this).data()["itemMarca"],
  115. modello: $(this).data()["itemModello"],
  116. qta: 1,
  117. }
  118. }).done(function (data) {
  119. qtaCorrente.val(data);
  120. });
  121. })
  122.  
  123. $('.qtaDiminuisci').on('click', function () {
  124. self = $(this);
  125. var qtaCorrente = $("input[name='Qta']").filter(function () {
  126. return ($(this).data()["itemMarca"] === self.data()["itemMarca"]) && ($(this).data()["itemModello"] === self.data()["itemModello"]);
  127. });
  128.  
  129. if (qtaCorrente.val() > 1) {
  130. var ajaxRequest = $.ajax({
  131. url: $(this).data()["actionUrl"],
  132. type: "post",
  133. data: {
  134. marca: $(this).data()["itemMarca"],
  135. modello: $(this).data()["itemModello"],
  136. qta: -1,
  137. }
  138. }).done(function (data) {
  139. qtaCorrente.val(data);
  140. });
  141. }
  142. })
  143.  
  144. public int AumentaODiminuisci(string marca, string modello, int qta)
  145. {
  146. // getting the inventory List from repository
  147. List<ElementoInventario> inventario = Repository.GetInventario();
  148.  
  149. // getting the correspondent item in the inventory
  150. Item itemDaModificare = inventario
  151. .Where(i => i.Item.Marca == marca && i.Item.Modello == modello)
  152. .FirstOrDefault().Item;
  153.  
  154. if (itemDaModificare != null)
  155. {
  156. // modify the quantity of that item in the cart
  157. GetCarrello().AumentaODiminuisciArticolo(itemDaModificare, qta);
  158. }
  159.  
  160. // return the update quantity
  161. return GetCarrello().Articoli
  162. .Where(i => i.Item.Marca == marca && i.Item.Modello == modello)
  163. .FirstOrDefault().Qta;
  164. }
  165.  
  166. private Carrello GetCarrello()
  167. {
  168. Carrello carrello = (Carrello)Session["Carrello"];
  169.  
  170. if (carrello == null)
  171. {
  172. carrello = new Carrello();
  173. Session["Carrello"] = carrello;
  174. }
  175. return carrello;
  176. }
Add Comment
Please, Sign In to add comment