216 lines
8.3 KiB
C#
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
|
|
}
|
|
}
|
|
|