Skip to content

Commit 53d3fa9

Browse files
committed
added deleted CartRule
1 parent 114dc22 commit 53d3fa9

File tree

6 files changed

+2679
-22
lines changed

6 files changed

+2679
-22
lines changed

src/Modules/SimplCommerce.Module.Inventory/wwwroot/admin/warehouse/warehouse-form.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div class="panel panel-default well">
1+
<div class="panel panel-default">
22
<div class="panel-heading">
33
<h2 ng-if="!vm.isEditMode">{{::vm.translate.get('Create Warehouse')}}</h2>
44
<h2 ng-if="vm.isEditMode">{{::vm.translate.get('Edit Warehouse')}}</h2>

src/Modules/SimplCommerce.Module.Pricing/Controllers/CartRuleApiController.cs

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
using System.Linq;
2+
using System.Threading.Tasks;
23
using Microsoft.AspNetCore.Authorization;
34
using Microsoft.AspNetCore.Mvc;
5+
using Microsoft.EntityFrameworkCore;
46
using SimplCommerce.Infrastructure.Data;
57
using SimplCommerce.Infrastructure.Web.SmartTable;
68
using SimplCommerce.Module.Pricing.Models;
79
using SimplCommerce.Module.Pricing.ViewModels;
8-
using Microsoft.EntityFrameworkCore;
910

1011
namespace SimplCommerce.Module.Pricing.Controllers
1112
{
@@ -41,12 +42,12 @@ public IActionResult List([FromBody] SmartTableParam param)
4142
}
4243

4344
[HttpGet("{id}")]
44-
public IActionResult Get(long id)
45+
public async Task<IActionResult> Get(long id)
4546
{
46-
var catrtRule = _cartRuleRepository.Query()
47+
var catrtRule = await _cartRuleRepository.Query()
4748
.Include(x => x.Coupons)
4849
.Include(x => x.Products).ThenInclude(p => p.Product)
49-
.FirstOrDefault(x => x.Id == id);
50+
.FirstOrDefaultAsync(x => x.Id == id);
5051
var model = new CartRuleForm
5152
{
5253
Id = catrtRule.Id,
@@ -78,7 +79,7 @@ public IActionResult Get(long id)
7879
}
7980

8081
[HttpPost]
81-
public IActionResult Post([FromBody] CartRuleForm model)
82+
public async Task<IActionResult> Post([FromBody] CartRuleForm model)
8283
{
8384
if (ModelState.IsValid)
8485
{
@@ -120,22 +121,22 @@ public IActionResult Post([FromBody] CartRuleForm model)
120121
}
121122

122123
_cartRuleRepository.Add(cartRule);
123-
_cartRuleRepository.SaveChanges();
124+
await _cartRuleRepository.SaveChangesAsync();
124125

125-
return Ok();
126+
return CreatedAtAction(nameof(Get), new { id = cartRule.Id }, null);
126127
}
127-
return new BadRequestObjectResult(ModelState);
128+
return BadRequest(ModelState);
128129
}
129130

130131
[HttpPut("{id}")]
131-
public IActionResult Put(long id, [FromBody] CartRuleForm model)
132+
public async Task<IActionResult> Put(long id, [FromBody] CartRuleForm model)
132133
{
133134
if (ModelState.IsValid)
134135
{
135-
var cartRule = _cartRuleRepository.Query()
136+
var cartRule = await _cartRuleRepository.Query()
136137
.Include(x => x.Coupons)
137138
.Include(x => x.Products)
138-
.FirstOrDefault(x => x.Id == id);
139+
.FirstOrDefaultAsync(x => x.Id == id);
139140
if(cartRule == null)
140141
{
141142
return NotFound();
@@ -195,11 +196,32 @@ public IActionResult Put(long id, [FromBody] CartRuleForm model)
195196
cartRule.Products.Remove(item);
196197
}
197198

198-
_cartRuleRepository.SaveChanges();
199+
await _cartRuleRepository.SaveChangesAsync();
200+
return Accepted();
201+
}
202+
return BadRequest(ModelState);
203+
}
204+
205+
[HttpDelete("{id}")]
206+
public async Task<IActionResult> Delete(long id)
207+
{
208+
var cartRule = await _cartRuleRepository.Query().FirstOrDefaultAsync(x => x.Id == id);
209+
if (cartRule == null)
210+
{
211+
return NotFound();
212+
}
199213

200-
return Ok();
214+
try
215+
{
216+
_cartRuleRepository.Remove(cartRule);
217+
await _cartRuleRepository.SaveChangesAsync();
201218
}
202-
return new BadRequestObjectResult(ModelState);
219+
catch (DbUpdateException)
220+
{
221+
return BadRequest(new { Error = $"The cart rule {cartRule.Name} can't not be deleted because it has been used" });
222+
}
223+
224+
return NoContent();
203225
}
204226
}
205227
}

src/Modules/SimplCommerce.Module.Pricing/Data/PricingCustomModelBuilder.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,29 @@ public class PricingCustomModelBuilder : ICustomModelBuilder
88
{
99
public void Build(ModelBuilder modelBuilder)
1010
{
11+
modelBuilder.Entity<Coupon>(b =>
12+
{
13+
b.HasOne(cc => cc.CartRule).WithMany(c => c.Coupons).HasForeignKey(x => x.CartRuleId).OnDelete(DeleteBehavior.Cascade);
14+
});
15+
1116
modelBuilder.Entity<CartRuleCategory>(b =>
1217
{
1318
b.HasKey(cc => new { cc.CartRuleId, cc.CategoryId });
14-
b.HasOne(cc => cc.CartRule).WithMany(c => c.Categories).HasForeignKey(x => x.CartRuleId);
19+
b.HasOne(cc => cc.CartRule).WithMany(c => c.Categories).HasForeignKey(x => x.CartRuleId).OnDelete(DeleteBehavior.Cascade);
1520
b.HasOne(cc => cc.Category).WithMany().HasForeignKey(x => x.CategoryId);
1621
});
1722

1823
modelBuilder.Entity<CartRuleProduct>(b =>
1924
{
2025
b.HasKey(cp => new { cp.CartRuleId, cp.ProductId });
21-
b.HasOne(cp => cp.CartRule).WithMany(p => p.Products).HasForeignKey(x => x.CartRuleId);
26+
b.HasOne(cp => cp.CartRule).WithMany(p => p.Products).HasForeignKey(x => x.CartRuleId).OnDelete(DeleteBehavior.Cascade);
2227
b.HasOne(cp => cp.Product).WithMany().HasForeignKey(x => x.ProductId);
2328
});
2429

2530
modelBuilder.Entity<CartRuleCustomerGroup>(b =>
2631
{
2732
b.HasKey(cc => new { cc.CartRuleId, cc.CustomerGroupId });
28-
b.HasOne(cc => cc.CartRule).WithMany(c => c.CustomerGroups).HasForeignKey(x => x.CartRuleId);
33+
b.HasOne(cc => cc.CartRule).WithMany(c => c.CustomerGroups).HasForeignKey(x => x.CartRuleId).OnDelete(DeleteBehavior.Cascade);
2934
b.HasOne(cc => cc.CustomerGroup).WithMany().HasForeignKey(x => x.CustomerGroupId);
3035
});
3136

0 commit comments

Comments
 (0)