demo20230512/Areas/admin/Controllers/YearlyParameterCategoryController.cs
2023-05-12 10:20:28 +08:00

262 lines
10 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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