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