Files
ayanova7/source/ri/ri/Controllers/LoanItemController.cs
2018-06-29 19:47:36 +00:00

216 lines
8.3 KiB
C#

using System;
using System.Web.Mvc;
using GZTW.AyaNova.BLL;
using ri.util;
namespace ri.Controllers
{
public class LoanItemController : Controller
{
#region List
//
// GET: /LoanItem/
public ActionResult Index(Guid id)
{
Workorder c = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItem, id);
if (c == null) return HttpNotFound();
ViewBag.woId = c.ID;
formInit(c);
ViewBag.newItemUrl = ay.genBaseSiteUrl(Url) + "LoanItem/Create?Id=" + id.ToString();
return View(c.WorkorderItems[id].Loans);
}
#endregion list
#region Create
//
// GET: /LoanItem/Create
public ActionResult Create(Guid id)//NOTE: ID MUST BE WORKORDERITEMID
{
//workorderitemloan can't be created and saved without a loan item ID (broken rules)
//so this code is different than most grandchild collection items
return RedirectToAction("Edit", new { id = AyaBizUtils.NewObjectGuid, sWoItemId=id.ToString() });
}
#endregion create
#region Edit
//
// GET: /LoanItem/Edit/5
public ActionResult Edit(Guid id, string sWoItemId="")
{
WorkorderItemLoan c = null;
Workorder w = null;
if (id == AyaBizUtils.NewObjectGuid)
{
Guid woItemId = new Guid(sWoItemId);
w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItem, woItemId);
c = w.WorkorderItems[woItemId].Loans.Add(w.WorkorderItems[woItemId]);
}
else
{
w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItemLoan, id);
ViewBag.WorkorderID = w.ID;
ViewBag.WorkorderItemID = w.GetWorkorderItemIDFromDescendant(RootObjectTypes.WorkorderItemLoan, id);
c = w.WorkorderItems[ViewBag.WorkorderItemID].Loans[id];
if (c == null) return HttpNotFound();
}
formInit(w, c);
return View(c);
}
#endregion edit
#region Update
//
// POST: /LoanItem/Edit/5
[HttpPost]
public ActionResult Edit(Guid id, FormCollection f, string sWoItemId = "")
{
WorkorderItemLoan c = null;
Workorder w = null;
try
{
if (id == AyaBizUtils.NewObjectGuid)
{
Guid woItemId = new Guid(sWoItemId);
w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItem, woItemId);
c = w.WorkorderItems[woItemId].Loans.Add(w.WorkorderItems[woItemId]);
ViewBag.WorkorderID = w.ID;
ViewBag.WorkorderItemID = woItemId;
}
else
{
w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItemLoan, id);
ViewBag.WorkorderID = w.ID;
ViewBag.WorkorderItemID = w.GetWorkorderItemIDFromDescendant(RootObjectTypes.WorkorderItemLoan, id);
c = w.WorkorderItems[ViewBag.WorkorderItemID].Loans[id];
}
//update all the fields from collection
c.LoanItemID = ay.parseGuid("LoanItemID", f);
c.OutDate = ay.ParseDateToDbValue("OutDate", f);
c.DueDate = ay.ParseDateToDbValue("DueDate", f);
c.ReturnDate = ay.ParseDateToDbValue("ReturnDate", f);
c.Rate = (LoanItemRates)ay.ParseInt("Rate",f);
c.Quantity = ay.parseDecimal("Quantity", f);
c.Charges = ay.parseDecimal("Charges", f);
c.TaxCodeID = ay.parseGuid("TaxCodeID", f);
c.Notes = ay.ParseMultiLineText("Notes", f);
//handle update
if (w.IsDirty)
{
if (w.IsSavable)
w.Save();
else
{
//Broken rules
ayBrokenRules rulesError = new ayBrokenRules(c);
ViewBag.err = rulesError;
}
}
}
catch (Exception ex)
{
ay.setGeneralError(TempData, ex);
}
formInit(w,c);
return View(c);
}
#endregion update
#region Delete
//
// GET: /LoanItem/Delete/5
public ActionResult Delete(Guid id, string ayf)
{
try
{
Workorder w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItemLoan, id);
if (w == null) return HttpNotFound();
ViewBag.WorkorderID = w.ID;
Guid woItemId = w.GetWorkorderItemIDFromDescendant(RootObjectTypes.WorkorderItemLoan, id);
w.WorkorderItems[woItemId].Loans.Remove(id);
w.Save();
return Redirect(ayf);
}
catch (Exception ex)
{
ay.setGeneralError(TempData, util.ay.GetSQLError(ex));
return RedirectToAction("Index");
}
}
#endregion delete
#region AJAX charges route
[HttpPost]
public JsonResult charges(string sRate, string sLoanItemId, string sQuantity)
{
int nRate = ay.parseIntDirect(sRate);
Guid loanItemId = new Guid(sLoanItemId);
LoanItemRates liRate = (LoanItemRates)nRate;
decimal dQuantity = ay.parseDecimalDirect(sQuantity);
//nothing to do?
if (loanItemId == Guid.Empty || dQuantity == 0 || liRate == LoanItemRates.None)
return Json(new { retCharges = 0 });
LoanItemPickList lip = LoanItemPickList.GetOneLoanItem(loanItemId);
if (!(lip.Count > 0))
return Json(new { retCharges = 0 });
return Json(new { retCharges = (dQuantity * lip.RateValue(loanItemId, liRate)) });
}
#endregion check charges
#region Menu and rights
private void formInit(Workorder w, WorkorderItemLoan c = null)
{
//set rights
util.ay.setViewBagRights(ViewBag, w.WorkorderItemChildEffectiveRights(RootObjectTypes.WorkorderItemLoan));
// util.ay.setViewBagRights(ViewBag, w.uiResolvedRights);
//util.ay.setViewBagRights(ViewBag, RootObjectTypes.WorkorderItemLoan);
if (c != null)
{
//generate menu
#region Generate menu
ayMenu m = new ayMenu();
m.title = "O.WorkorderItemLoan";
m.icon = "icon-WorkorderItemLoan";
string baseurl = ay.genBaseSiteUrl(Url);
string cId = c.ID.ToString();
string sType = ((int)RootObjectTypes.WorkorderItemLoan).ToString();
//RECORD HISTORY
m.menuItems.Add(new ayMenuItem("scriptitem", "UI.Command.RecordHistory", "alert('" +
ay.RecordHistoryText(c.Creator, c.Modifier, c.Created, c.Modified) +
"')", "icon-RecordHistory"));
//---COMMAND ITEMS---
m.menuItems.Add(new ayMenuItem("divider", "", "", ""));
//DELETE
if (ViewBag.ayCanDelete)
{
m.menuItems.Add(new ayMenuItem("navitem", "UI.Command.Delete", baseurl + "LoanItem/Delete?id=" + cId, "icon-Delete", ay.PromptForDelete(), "ay-set-ret-url"));
}
//CREATE
if (ViewBag.ayCanEdit)
m.menuItems.Add(new ayMenuItem("navitem", "UI.Toolbar.New", baseurl + "LoanItem/Create?id=" + c.WorkorderItemID.ToString(), "icon-Add"));//UI.Toolbar.New
ViewBag.ayMenu = m;
#endregion generate menu
}
}
#endregion
//eoc
}
}