Remove inventory, delete transactions

This commit is contained in:
2016-09-14 07:53:41 -04:00
parent 9cdf90b1e9
commit 052f812d6f
33 changed files with 3250 additions and 142 deletions
@@ -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});
}
}
}