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

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
}
}