Remove inventory, delete transactions
This commit is contained in:
@@ -2,9 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using AutoMapper;
|
||||
using AutoMapper.QueryableExtensions;
|
||||
using InventoryTraker.Web.ActionResults;
|
||||
using InventoryTraker.Web.Core;
|
||||
using InventoryTraker.Web.Data;
|
||||
using InventoryTraker.Web.Models;
|
||||
@@ -35,7 +33,7 @@ namespace InventoryTraker.Web.Controllers
|
||||
return BetterJson(viewModels);
|
||||
}
|
||||
|
||||
public JsonResult GetTransactions(int? pageNumber, int? pageSize, int? inventoryId)
|
||||
public JsonResult Get(int? pageNumber, int? pageSize, int? inventoryId)
|
||||
{
|
||||
IQueryable<Transaction> query =
|
||||
_context.Transactions
|
||||
@@ -56,5 +54,38 @@ namespace InventoryTraker.Web.Controllers
|
||||
.ToArray();
|
||||
return BetterJson(new { totalItems, transactions });
|
||||
}
|
||||
|
||||
public JsonResult Delete(int transactionId)
|
||||
{
|
||||
var transaction = _context.Transactions.Find(transactionId);
|
||||
|
||||
if (transaction == null)
|
||||
return GetErrorListJson("Transaction not found");
|
||||
|
||||
var inventory = transaction.Inventory;
|
||||
var inventoryId = inventory.Id;
|
||||
|
||||
var inventoryTransactionsMostRecent =
|
||||
inventory
|
||||
.Transactions.OrderByDescending(t => t.TransactionDate)
|
||||
.First() == transaction;
|
||||
|
||||
if (!inventoryTransactionsMostRecent)
|
||||
return GetErrorListJson("Delete permitted only when transaction is the most recent");
|
||||
|
||||
// roll back that transaction
|
||||
inventory.Quantity -= transaction.AddedQuantity;
|
||||
inventory.Quantity += transaction.RemovedQuantity;
|
||||
|
||||
inventory.Transactions.Remove(transaction);
|
||||
_context.Transactions.Remove(transaction);
|
||||
|
||||
if (!inventory.Transactions.Any())
|
||||
_context.Inventories.Remove(inventory);
|
||||
|
||||
_context.SaveChanges();
|
||||
|
||||
return BetterJson(new { inventoryId});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user