summaryrefslogtreecommitdiff
path: root/Controllers/BundleController.cs
blob: 8e72dd3215720850c8960c1a2f8f440e6807bfb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
using System.Data;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using MyDarling.Models;

namespace MyDarling.Controllers
{
	public class BundleController : Controller
	{
		private DataContext context;
		public bool TryUpdateModel { get; private set; }

		public BundleController(DataContext context)
		{
			this.context = context;
		}

		public ActionResult Index()
		{
			return View(context.UnderwearBundles.Include(b => b.Figures));
		}

		public ActionResult Create()
		{
			return View();
		}

		[HttpPost]
		public async Task<ActionResult> Create([Bind] UnderwearBundle bundle)
		{
			try
			{
				if (ModelState.IsValid)
				{
					await context.UnderwearBundles.AddAsync(bundle);
					context.SaveChanges();
					return RedirectToAction(nameof(Index));
				}
			}
			catch (DataException)
			{
				ModelState.AddModelError("", "Unable to save changes");
			}
			return View(bundle);
		}

		public async Task<ActionResult> Details(int id)
		{
			return View(await context.UnderwearBundles.FindAsync(id));
		}
		
		public async Task<ActionResult> Edit(int id)
		{
			return View(nameof(Details), await context.UnderwearBundles.FindAsync(id));
		}

		[HttpPost]
		public async Task<ActionResult> Edit(int? id)
		{
			if (id == null)
			{
				return NotFound();
			}
			
			var bundle = await context.UnderwearBundles.FindAsync(id);
			if (bundle == null)
			{
				return NotFound();
			}
			
			if (await TryUpdateModelAsync<UnderwearBundle>(
				bundle,
				"",
				b => b.Name, b => b.Description, b => b.Price))
			{
				try
				{
					await context.SaveChangesAsync();
					return RedirectToAction(nameof(Index));
				}
				catch (System.Exception)
				{
					ModelState.AddModelError("", "Unable to save changes");
				}
			}			
			return View(bundle);
		}

		[HttpPost]
		public async Task<ActionResult> Delete(int id)
		{
			var bundleToDelete = await context.UnderwearBundles.FindAsync(id);
			if (bundleToDelete == null)
			{
				return NotFound();
			}
			
			try
			{
				context.UnderwearBundles.Remove(bundleToDelete);
				await context.SaveChangesAsync();
				return RedirectToAction(nameof(Index));
			}
			catch(DbUpdateException)
			{
				return RedirectToAction(nameof(Delete), new {id = id, saveChangesError = true});
			}
		}
	}
}