demo20230512/Areas/admin/Controllers/YearlyParameterCategoryController.cs

262 lines
10 KiB
C#
Raw Normal View History

2023-05-12 10:20:28 +08:00
using System;
using System.Data.Entity;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Weee.Models;
using Weee.Models.Paramemter;
using Weee.DAL;
using Weee.Models.ExtensionMethods;
using Resources;
using DocumentFormat.OpenXml.EMMA;
namespace Weee.Areas.Admin.Controllers
{
public class YearlyParameterCategoryController : AdminControllerBase
{
public YearlyParameterCategoryController(WeeeDataContext db)
:base(db)
{
}
#region Area action
public ActionResult CreateArea(Categories c)
{
//var qry = (from a in uow.yearlyParameterRepository.Get()
// select a).AsQueryable();
ViewBag.Category = c;
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateArea(Categories c,YearlyParameterArea Area)
{
if (ModelState.IsValid)
{
db.YearlyParameterCategories.Where(x=>x.Category==c).First().Areas.Add(Area);
db.SaveChanges();
return RedirectToAction("index", "YearlyParameter", new { c = c });
}
ViewBag.Category = c;
return View();
}
public ActionResult EditArea(int? a)
{
if (a == null) return RedirectToAction("index", "home");
var Model = db.YearlyParameterAreas.Find(a.Value);
if (Model == null) return RedirectToAction("index", "home");
ViewBag.Category = Model.Category.Category;
return View(Model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EditArea(YearlyParameterArea Model)
{
var Category = db.YearlyParameterCategories.Single(x => x.ID == Model.CategoryID).Category;
if (ModelState.IsValid)
{
db.Entry(Model).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("index", "YearlyParameter", new { c = Category });
}
ViewBag.Category = Category;
return View(Model);
}
public ActionResult DeleteArea(int a, Categories category)
{
var Area = db.YearlyParameterAreas.Find(a);
if (Area != null)
{
//begin DL-21
var yearParameters = db.YearlyParameters.Where(x => x.AreaID == Area.ID).ToList();
this.RemoveYearlyParameters(yearParameters);
db.YearlyParameterAreas.Remove(Area);
db.SaveChanges();
}
return RedirectToAction("index", "YearlyParameter", new { c = category });
}
#endregion
#region Type action
public ActionResult CreateType(Categories c)
{
ViewBag.Category = c;
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateType(Categories c, YearlyParameterType Model)
{
if (string.IsNullOrWhiteSpace(Model.DisplayNameCN))
ModelState.AddModelError("DisplayNameCN", "簡中不得為空白");
if (string.IsNullOrWhiteSpace(Model.DisplayNameEN))
ModelState.AddModelError("DisplayNameEN", "英文不得為空白");
ViewBag.Category = c;
if (!ModelState.IsValid)
return View();
dealWithWarmGasType(Model);
if (Model.oriHeatValue.ToString().Trim().Equals(""))
{
Model.oriHeatValue = null;
}
if (ModelState.IsValid)
{
db.YearlyParameterCategories.Where(x => x.Category == c).First().Types.Add(Model);
db.SaveChanges();
//return View(Model);
return RedirectToAction("index", "YearlyParameter", new { c = c });
}
return View();
}
public ActionResult EditType(int? t)
{
if (t == null) return RedirectToAction("index", "home");
var Model = db.YearlyParameterTypes.Include(x=>x.Category).Single(x=>x.ID==t.Value);
if (Model == null) return RedirectToAction("index", "home");
ViewBag.Category = Model.Category.Category;
return View(Model);
}
private string purgeTW(string source)
{
string ret=source;
ret = ret.Replace("固定源 - ", "");
ret = ret.Replace("固定源", "");
ret = ret.Trim();
ret = ret.Replace("移動源 - ", "");
ret = ret.Replace("移動源", "");
ret = ret.Trim();
return ret;
}
private string purgeCN(string source)
{
string ret = source;
ret = ret.Replace("固定源 - ", "");
ret = ret.Replace("固定源", "");
ret = ret.Trim();
ret = ret.Replace("移动源 - ", "");
ret = ret.Replace("移动源", "");
ret = ret.Trim();
return ret;
}
private string purgeEN(string source)
{
string ret = source;
ret = ret.Replace("stationary", "");
ret = ret.Replace("mobile", "");
ret = ret.Trim();
return ret;
}
//溫室氣體排放型態處理
private void dealWithWarmGasType(YearlyParameterType Model)
{
switch (Model.warmGasType)
{
case WarmGasType.:
Model.DisplayNameTW = purgeTW(Model.DisplayNameTW);
Model.DisplayNameCN = purgeCN(Model.DisplayNameCN);
Model.DisplayNameEN = purgeEN(Model.DisplayNameEN);
Model.DisplayNameTW = "固定源 - " + Model.DisplayNameTW;
Model.DisplayNameCN = "固定源 - " + Model.DisplayNameCN;
Model.DisplayNameEN = "stationary " + Model.DisplayNameEN;
break;
case WarmGasType.:
Model.DisplayNameTW = purgeTW(Model.DisplayNameTW);
Model.DisplayNameCN = purgeCN(Model.DisplayNameCN);
Model.DisplayNameEN = purgeEN(Model.DisplayNameEN);
Model.DisplayNameTW = "移動源 - " + Model.DisplayNameTW;
Model.DisplayNameCN = "移动源 - " + Model.DisplayNameCN;
Model.DisplayNameEN = "mobile " + Model.DisplayNameEN;
break;
case WarmGasType.:
Model.DisplayNameTW = purgeTW(Model.DisplayNameTW);
Model.DisplayNameCN = purgeCN(Model.DisplayNameCN);
Model.DisplayNameEN = purgeEN(Model.DisplayNameEN);
if (Model.DisplayNameEN.Trim().ToUpper().CompareTo("CO2") != 0)
ModelState.AddModelError("", "僅CO2為逸散型態");
break;
case WarmGasType.:
Model.DisplayNameTW = purgeTW(Model.DisplayNameTW);
Model.DisplayNameCN = purgeCN(Model.DisplayNameCN);
Model.DisplayNameEN = purgeEN(Model.DisplayNameEN);
break;
}
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EditType(YearlyParameterType Model)
{
var Category = db.YearlyParameterCategories.Single(x => x.ID == Model.CategoryID).Category;
dealWithWarmGasType(Model);
if (Model.oriHeatValue.ToString().Trim().Equals(""))
{
Model.oriHeatValue = null;
}
ViewBag.Category = Category;
if (ModelState.IsValid)
{
db.Entry(Model).State = EntityState.Modified;
db.SaveChanges();
//return View(Model);
return RedirectToAction("index", "YearlyParameter", new { c = Category });
}
return View(Model);
}
public ActionResult DeleteType(int t, Categories category)
{
var Type = db.YearlyParameterTypes.Find(t);
if (Type != null)
{
var yearParameters = db.YearlyParameters.Where(x => x.TypeID == Type.ID).ToList();
List<int> yearlyParaIds = yearParameters.Select(x=>x.ID).ToList();
var Water=db.ProductLCAFabSurveyForm_WaterUsage.Where(x=>yearlyParaIds.Any(y=>y==x.ParameterID)).ToList();
if (Water != null && Water.Count > 0)
db.ProductLCAFabSurveyForm_WaterUsage.RemoveRange(Water);
var Water2 = db.LCARiskAssmtSurveyForm_WaterUsage.Where(x => yearlyParaIds.Any(y => y == x.ParameterID)).ToList();
if (Water2 != null && Water.Count > 0)
db.LCARiskAssmtSurveyForm_WaterUsage.RemoveRange(Water2);
this.RemoveYearlyParameters(yearParameters);
db.YearlyParameterTypes.Remove(Type);
db.SaveChanges();
}
return RedirectToAction("index", "YearlyParameter", new { c = category });
}
#endregion
protected void RemoveYearlyParameters(List<YearlyParameter> parameters)
{
foreach (var parameter in parameters)
{
db.ProductLCAFabSurveyForm_WaterUsage.RemoveRange(
db.ProductLCAFabSurveyForm_WaterUsage.Where(x => x.ParameterID == parameter.ID));
db.LCACommonSurveyForm_GasolineEquipment.RemoveRange(
db.LCACommonSurveyForm_GasolineEquipment.Where(x => x.ParameterID == parameter.ID));
db.LCACommonSurveyForm_Kitchen.RemoveRange(
db.LCACommonSurveyForm_Kitchen.Where(x => x.ParameterID == parameter.ID));
db.LCACommonSurveyForm_PowerUsage.RemoveRange(
db.LCACommonSurveyForm_PowerUsage.Where(x => x.ParameterID == parameter.ID));
db.LCACommonSurveyForm_SteamUsage.RemoveRange(
db.LCACommonSurveyForm_SteamUsage.Where(x => x.ParameterID == parameter.ID));
db.LCACommonSurveyForm_Vehicle.RemoveRange(
db.LCACommonSurveyForm_Vehicle.Where(x => x.ParameterID == parameter.ID));
}
db.YearlyParameters.RemoveRange(parameters);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}