You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MenuItemRepository.cs 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using Microsoft.EntityFrameworkCore;
  2. using Microsoft.EntityFrameworkCore.Storage.ValueConversion.Internal;
  3. using ProRestaurant.Classes;
  4. using ProRestaurant.DBContexts;
  5. using ProRestaurant.Models.Restaurants;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Drawing;
  9. using System.IO;
  10. using System.Linq;
  11. namespace ProRestaurant.Repository.Restaurants
  12. {
  13. public class MenuItemRepository : IMenuItemRepository
  14. {
  15. private readonly DBContext dBContext;
  16. public MenuItemRepository(DBContext db)
  17. {
  18. dBContext = db;
  19. }
  20. public MenuItem GetMenuItem(int Id)
  21. {
  22. var item = dBContext.MenuItems.Where(m => m.Id == Id).FirstOrDefault();
  23. if (item == null)
  24. {
  25. item = new MenuItem();
  26. }
  27. else
  28. {
  29. if (item.CategoryId > 0)
  30. item.Category = dBContext.MenuCategories.Where(c => c.Id == item.CategoryId).Select(c => c.Description).FirstOrDefault();
  31. if (!string.IsNullOrEmpty(item.Image))
  32. {
  33. if (!item.Image.Contains("data:image"))
  34. item.Image = ImageFormatter.ImageToBase64(item.Image);
  35. }
  36. item.Options = dBContext.MenuOptions.Where(o => o.MenuItemId == item.Id).ToList();
  37. }
  38. return item;
  39. }
  40. public IEnumerable<MenuItem> GetMenuItems(Func<MenuItem, bool> where)
  41. {
  42. var items = dBContext.MenuItems.Where(where).ToList();
  43. foreach (var item in items)
  44. {
  45. if (item.CategoryId > 0)
  46. item.Category = dBContext.MenuCategories.Where(c => c.Id == item.CategoryId).Select(c => c.Description).FirstOrDefault();
  47. if (!string.IsNullOrEmpty(item.Image))
  48. {
  49. if (!item.Image.Contains("data:image"))
  50. item.Image = ImageFormatter.ImageToBase64(item.Image);
  51. }
  52. }
  53. return items;
  54. }
  55. public void Insert(MenuItem Item)
  56. {
  57. Item.Image = SaveImage(Item);
  58. dBContext.Add(Item);
  59. Save();
  60. }
  61. public void Remove(MenuItem Item)
  62. {
  63. dBContext.MenuItems.Remove(Item);
  64. Save();
  65. }
  66. public void Save()
  67. {
  68. dBContext.SaveChanges();
  69. }
  70. public void Update(MenuItem Item)
  71. {
  72. Item.Image = SaveImage(Item);
  73. dBContext.Entry(Item).State = EntityState.Modified;
  74. Save();
  75. }
  76. private string SaveImage(MenuItem Item)
  77. {
  78. string image = Item.Image;
  79. if (!string.IsNullOrEmpty(Item.Image))
  80. {
  81. bool saveFile = false;
  82. var loc = dBContext.Locations.FirstOrDefault()?.ImageStore;
  83. if (!string.IsNullOrEmpty(loc))
  84. {
  85. var rest = dBContext.Restaurants.Where(r => r.Id == Item.RestaurantId).FirstOrDefault();
  86. var folderName = rest.Name + "-" + rest.Suburb;
  87. saveFile = true;
  88. loc += string.Format("{0}", folderName);
  89. if (!Directory.Exists(loc))
  90. {
  91. Directory.CreateDirectory(loc);
  92. }
  93. if (saveFile)
  94. {
  95. string path = ImageFormatter.Base64ToImage(Item.Image, loc, Item.Name.Trim());
  96. image = path;
  97. }
  98. }
  99. }
  100. return image;
  101. }
  102. }
  103. }