242 lines
8.8 KiB
C#
242 lines
8.8 KiB
C#
using System;
|
|
using System.Web.Mvc;
|
|
using GZTW.AyaNova.BLL;
|
|
using ri.util;
|
|
|
|
namespace ri.Controllers
|
|
{
|
|
public class TravelController : Controller
|
|
{
|
|
#region List
|
|
//
|
|
// GET: /Travel/
|
|
public ActionResult Index(Guid id)
|
|
{
|
|
Workorder c = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItem, id);
|
|
if (c == null) return HttpNotFound();
|
|
|
|
formInit(c);
|
|
ViewBag.newItemUrl = ay.genBaseSiteUrl(Url) + "Travel/Create?Id=" + id.ToString();
|
|
|
|
return View(c.WorkorderItems[id].Travels);
|
|
|
|
}
|
|
#endregion list
|
|
|
|
#region Create
|
|
|
|
//
|
|
// GET: /Travel/Create
|
|
public ActionResult Create(Guid id)
|
|
{
|
|
Workorder c = null;
|
|
try
|
|
{
|
|
c = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItem, id);
|
|
if (c == null) return HttpNotFound();
|
|
WorkorderItemTravel i = c.WorkorderItems[id].Travels.Add(c.WorkorderItems[id]);
|
|
|
|
c.Save();
|
|
return RedirectToAction("Edit", new { id = i.ID });
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ay.setGeneralError(TempData, ex);
|
|
formInit(c);
|
|
return RedirectToAction("Index", "Home");
|
|
}
|
|
}
|
|
|
|
#endregion create
|
|
|
|
#region Edit
|
|
//
|
|
// GET: /Travel/Edit/5
|
|
public ActionResult Edit(Guid id)
|
|
{
|
|
Workorder w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItemTravel, id);
|
|
ViewBag.WorkorderID = w.ID;
|
|
ViewBag.WorkorderItemID = w.GetWorkorderItemIDFromDescendant(RootObjectTypes.WorkorderItemTravel, id);
|
|
WorkorderItemTravel c = w.WorkorderItems[ViewBag.WorkorderItemID].Travels[id];
|
|
if (c == null) return HttpNotFound();
|
|
formInit(w,c);
|
|
return View(c);
|
|
}
|
|
#endregion edit
|
|
|
|
#region Update
|
|
//
|
|
// POST: /Travel/Edit/5
|
|
[HttpPost]
|
|
public ActionResult Edit(Guid id, FormCollection f)
|
|
{
|
|
WorkorderItemTravel c = null;
|
|
Workorder w = null;
|
|
try
|
|
{
|
|
w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItemTravel, id);
|
|
ViewBag.WorkorderID = w.ID;
|
|
ViewBag.WorkorderItemID = w.GetWorkorderItemIDFromDescendant(RootObjectTypes.WorkorderItemTravel, id);
|
|
c = w.WorkorderItems[ViewBag.WorkorderItemID].Travels[id];
|
|
|
|
//update all the fields from collection
|
|
c.TravelStartDate = ay.ParseDateToDbValue("TravelStartDate", f);
|
|
c.TravelStopDate = ay.ParseDateToDbValue("TravelStopDate", f);
|
|
|
|
//autocomplete stop if empty
|
|
if ((!(c.TravelStartDate is System.DBNull)) && c.TravelStopDate is System.DBNull && (AyaBizUtils.GlobalSettings.TravelDfltTimeSpan != 0))
|
|
c.TravelStopDate = ((DateTime)c.TravelStartDate).AddMinutes(AyaBizUtils.GlobalSettings.TravelDfltTimeSpan);
|
|
|
|
|
|
|
|
c.UserID = ay.parseGuid("UserID", f);
|
|
c.TravelRateQuantity = ay.parseDecimal("TravelRateQuantity", f);
|
|
c.NoChargeQuantity = ay.parseDecimal("NoChargeQuantity", f);
|
|
c.Distance = ay.parseDecimal("Distance", f);
|
|
c.TravelRateID = ay.parseGuid("TravelRateID", f);
|
|
c.TaxRateSaleID = ay.parseGuid("TaxRateSaleID", f);
|
|
c.TravelDetails = ay.ParseMultiLineText("TravelDetails", 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: /Travel/Delete/5
|
|
public ActionResult Delete(Guid id, string ayf)
|
|
{
|
|
try
|
|
{
|
|
Workorder w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItemTravel, id);
|
|
if (w == null) return HttpNotFound();
|
|
ViewBag.WorkorderID = w.ID;
|
|
Guid woItemId = w.GetWorkorderItemIDFromDescendant(RootObjectTypes.WorkorderItemTravel, id);
|
|
w.WorkorderItems[woItemId].Travels.Remove(id);
|
|
w.Save();
|
|
return Redirect(ayf);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ay.setGeneralError(TempData, util.ay.GetSQLError(ex));
|
|
return RedirectToAction("Index");
|
|
}
|
|
}
|
|
|
|
#endregion delete
|
|
|
|
#region Bank
|
|
//
|
|
// GET: /Travel/Bank
|
|
public ActionResult Bank(Guid id)
|
|
{
|
|
WorkorderItemTravel c = null;
|
|
Workorder w = null;
|
|
try
|
|
{
|
|
w = Workorder.GetWorkorderByRelativeNoMRU(RootObjectTypes.WorkorderItemTravel, id);
|
|
ViewBag.WorkorderID = w.ID;
|
|
ViewBag.WorkorderItemID = w.GetWorkorderItemIDFromDescendant(RootObjectTypes.WorkorderItemTravel, id);
|
|
c = w.WorkorderItems[ViewBag.WorkorderItemID].Travels[id];
|
|
if (c == null) return HttpNotFound();
|
|
c.ApplyToServiceBankAuto(w);
|
|
w.Save();
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ay.setGeneralError(TempData, ex);
|
|
}
|
|
|
|
formInit(w,c);
|
|
return RedirectToAction("Edit", "Travel", new { id = id });
|
|
}
|
|
|
|
#endregion bank
|
|
|
|
#region Menu and rights
|
|
|
|
private void formInit(Workorder w, WorkorderItemTravel c = null)
|
|
{
|
|
//set rights
|
|
//special case, if banked is read only always:
|
|
if (c != null && c.IsBanked)
|
|
util.ay.setViewBagRights(ViewBag, SecurityLevelTypes.ReadOnly);
|
|
else
|
|
util.ay.setViewBagRights(ViewBag, w.WorkorderItemChildEffectiveRights(RootObjectTypes.WorkorderItemTravel));
|
|
|
|
// util.ay.setViewBagRights(ViewBag, w.uiResolvedRights);
|
|
if (c != null)
|
|
{
|
|
//generate menu
|
|
#region Generate menu
|
|
ayMenu m = new ayMenu();
|
|
m.title = "O.WorkorderItemTravel";
|
|
m.icon = "icon-truck";
|
|
string baseurl = ay.genBaseSiteUrl(Url);
|
|
string cId = c.ID.ToString();
|
|
string sType = ((int)RootObjectTypes.WorkorderItemTravel).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", "", "", ""));
|
|
|
|
//Bank this
|
|
|
|
TypeAndID bankableTid = w.BankableResolved(c.WorkorderItemID);
|
|
|
|
if (ViewBag.ayCanEdit &&
|
|
(!c.IsBanked) &&
|
|
(bankableTid != null) &&
|
|
(bankableTid.ID != Guid.Empty))
|
|
{
|
|
string bankMessage = ServiceBankCurrentBalanceFetcher.GetItem(bankableTid).DisplayBalances;
|
|
bankMessage += "\r\n" + ay.lt("WorkorderItemLabor.Label.UI.BankWarning") + "\r\n";
|
|
|
|
m.menuItems.Add(new ayMenuItem("navitem", "O.ServiceBank", baseurl + "Travel/Bank?id=" + cId, "icon-ServiceBank", bankMessage));
|
|
}
|
|
|
|
//DELETE
|
|
if (ViewBag.ayCanDelete)
|
|
{
|
|
m.menuItems.Add(new ayMenuItem("navitem", "UI.Command.Delete", baseurl + "Travel/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 + "Travel/Create?id=" + c.WorkorderItemID.ToString(), "icon-Add"));//UI.Toolbar.New
|
|
|
|
ViewBag.ayMenu = m;
|
|
#endregion generate menu
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
//eoc
|
|
|
|
}
|
|
}
|