341 lines
17 KiB
C#
341 lines
17 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Web;
|
|||
|
using System.Web.Mvc;
|
|||
|
using Weee.Areas.Certification.ViewModels;
|
|||
|
using Weee.DAL;
|
|||
|
using Weee.Models;
|
|||
|
using Weee.Service;
|
|||
|
using Weee.Areas.Certification.Models;
|
|||
|
using Weee.Models.ExtensionMethods;
|
|||
|
using Microsoft.AspNet.Identity;
|
|||
|
using Microsoft.AspNet.Identity.EntityFramework;
|
|||
|
using Weee.Models.Paramemter;
|
|||
|
using Weee.DataTransferObject;
|
|||
|
using System.IO;
|
|||
|
using EmailService.others;
|
|||
|
using System.Net;
|
|||
|
using System.Web.Configuration;
|
|||
|
using System.Web.Http;
|
|||
|
using Weee.Controllers;
|
|||
|
|
|||
|
namespace Weee.Areas.Certification.Controllers
|
|||
|
{
|
|||
|
// to do: Add parameter id in workhour, power usage, water usage
|
|||
|
public class LCAController : CertificationControllerBase
|
|||
|
{
|
|||
|
protected WeeeDataContext _db;
|
|||
|
protected WeeeLCADataService lcaDataService;
|
|||
|
protected WeeeSheetDataService sheetDataService;
|
|||
|
private readonly WeeeParameterDataService parameterservice;
|
|||
|
private readonly SignificanceAssmtDataService significanceAssmtservice;
|
|||
|
private readonly LifecycleAssmtDataService lifecycleservice;
|
|||
|
private readonly EmailService.Service service = DependencyResolver.Current.GetService<EmailService.Service>();//CFT-89
|
|||
|
private string fileSavedPath = WebConfigurationManager.AppSettings["UploadPath"];//CFT-89
|
|||
|
|
|||
|
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
|
|||
|
{
|
|||
|
base.Initialize(requestContext);
|
|||
|
this.lcaDataService.Initialize(User.Identity.GetUserId());
|
|||
|
this.sheetDataService.Initialize(User.Identity.GetUserId());
|
|||
|
this.significanceAssmtservice.Initialize(User.Identity.GetUserId());
|
|||
|
this.lifecycleservice.Initialize(User.Identity.GetUserId());
|
|||
|
}
|
|||
|
|
|||
|
public LCAController(WeeeDataContext db, WeeeLCADataService lcaDataService
|
|||
|
, WeeeSheetDataService sheetDataService
|
|||
|
, WeeeCompanyDataService companyDataService
|
|||
|
, WeeeParameterDataService parameterservice
|
|||
|
, SignificanceAssmtDataService significanceAssmtservice
|
|||
|
, LifecycleAssmtDataService lifecycleservice)
|
|||
|
: base(db)
|
|||
|
{
|
|||
|
this.lcaDataService = lcaDataService;
|
|||
|
this.sheetDataService = sheetDataService;
|
|||
|
this.parameterservice = parameterservice;
|
|||
|
this.significanceAssmtservice = significanceAssmtservice;
|
|||
|
this.lifecycleservice = lifecycleservice;
|
|||
|
this._db = new WeeeDataContext();
|
|||
|
}
|
|||
|
|
|||
|
public ActionResult ProductLcaDetail(int id)
|
|||
|
{
|
|||
|
//var qry = (from a in uow.productRepository.Get()
|
|||
|
// select a).AsQueryable();
|
|||
|
var viewModel = new ProductLcaViewModel();
|
|||
|
|
|||
|
var productLca = lcaDataService.GetProductLCA(id);
|
|||
|
viewModel.ProductLca = productLca;
|
|||
|
|
|||
|
var inventoryStage = productLca.TargetInventoryStageData;
|
|||
|
var usageStage = new ProductUsageStageDTO();
|
|||
|
if (inventoryStage != null)
|
|||
|
{
|
|||
|
usageStage.WattInOperation = inventoryStage.WattInOperation;
|
|||
|
usageStage.WattInLowOperation = inventoryStage.WattInLowOperation;
|
|||
|
usageStage.TurnOnHourPerDayInWorkDay = inventoryStage.TurnOnHourPerDayInWorkDay;
|
|||
|
usageStage.TurnOnHourPerDayInOffDay = inventoryStage.TurnOnHourPerDayInOffDay;
|
|||
|
usageStage.WorkDayPerYear = inventoryStage.WorkDayPerYear;
|
|||
|
usageStage.PowerFactor = inventoryStage.ProductUsageStagePowerFactor;
|
|||
|
usageStage.Description = inventoryStage.ProductUsageStageDescription;
|
|||
|
usageStage.CalculateResult = inventoryStage.GetUsageStageCarbonFootprint();
|
|||
|
}
|
|||
|
viewModel.UsageStage = usageStage;
|
|||
|
|
|||
|
var abandonedStage = _db.ProductLCAAbandonedStages.Where(x => x.OwnerLCA.ID == id).Count() > 0 ? _db.ProductLCAAbandonedStages.Where(x => x.OwnerLCA.ID == id).First() : null;
|
|||
|
var abandonedStageDTO = new AbandonedStageDTO();
|
|||
|
if (inventoryStage != null && abandonedStage != null)
|
|||
|
{
|
|||
|
//abandonedStageDTO.WasteWeight = abandonedStage.WasteWeight;
|
|||
|
//abandonedStageDTO.RecyclePercentage = abandonedStage.RecyclePercentage;
|
|||
|
//abandonedStageDTO.ReusePercentage = abandonedStage.ReusePercentage;
|
|||
|
//abandonedStageDTO.RecoverPercentage = abandonedStage.RecoverPercentage;
|
|||
|
//abandonedStageDTO.IncinerationParameter = abandonedStage.IncinerationParameter;
|
|||
|
//abandonedStageDTO.AbandonedParameter = abandonedStage.AbandonedParameter;
|
|||
|
//abandonedStageDTO.Description = abandonedStage.Description;
|
|||
|
//abandonedStageDTO.CalculateResult = inventoryStage.ProductAbandonedStageCarbonFootprint;
|
|||
|
}
|
|||
|
viewModel.AbandonedStage = abandonedStageDTO;
|
|||
|
/*
|
|||
|
if (productLca.PCRID == null)
|
|||
|
{
|
|||
|
viewModel.DirectMaterial = this.sheetDataService.GetSheetHeader(id, Categories.BOM);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
viewModel.DirectMaterial = this.sheetDataService.GetSheetHeader(id, Categories.DirectMaterial);
|
|||
|
}
|
|||
|
*/
|
|||
|
viewModel.DirectMaterial = this.sheetDataService.GetSheetHeader(id, Categories.DirectMaterial);
|
|||
|
viewModel.IndirectMaterial = this.sheetDataService.GetSheetHeader(id, Categories.IndirectMaterial);
|
|||
|
viewModel.WrapMaterial = this.sheetDataService.GetSheetHeader(id, Categories.WrapMaterial);
|
|||
|
viewModel.WorkHourHeader = this.sheetDataService.GetSheetHeader(id, Categories.Septic);
|
|||
|
viewModel.PowerHeader = this.sheetDataService.GetSheetHeader(id, Categories.Electric);
|
|||
|
viewModel.WaterHeader = this.sheetDataService.GetSheetHeader(id, Categories.Water);
|
|||
|
viewModel.WasteWaterHeader = this.sheetDataService.GetSheetHeader(id, Categories.WasteWater);
|
|||
|
viewModel.TransportHeader = this.sheetDataService.GetSheetHeader(id, Categories.Transport);
|
|||
|
viewModel.WasteTransportHeader = this.sheetDataService.GetSheetHeader(id, Categories.SheetHeaderWasteTransport);
|
|||
|
viewModel.VehicleHeader = this.sheetDataService.GetSheetHeader(id, Categories.Vehicle);
|
|||
|
viewModel.GasolineHeader = this.sheetDataService.GetSheetHeader(id, Categories.GasolineEquipment);
|
|||
|
viewModel.KitchenHeader = this.sheetDataService.GetSheetHeader(id, Categories.Kitchen);
|
|||
|
viewModel.RefrigerantHeader = this.sheetDataService.GetSheetHeader(id, Categories.Refrigerant);
|
|||
|
viewModel.FireEquipmentHeader = this.sheetDataService.GetSheetHeader(id, Categories.FireEquipment);
|
|||
|
viewModel.SteamHeader = this.sheetDataService.GetSheetHeader(id, Categories.Steam);
|
|||
|
viewModel.OtherHeader = this.sheetDataService.GetSheetHeader(id, Categories.OtherCompound);
|
|||
|
|
|||
|
ViewData["DownloadZipReport"] =baseUrl+ viewModel.ProductLca.UploadZipReportUrl;
|
|||
|
return View(viewModel);
|
|||
|
}
|
|||
|
|
|||
|
public ActionResult OrganizationLcaDetail(int id)
|
|||
|
{
|
|||
|
var organizationLca = lcaDataService.GetOrganizationLCA(id);
|
|||
|
//return View(organizationLca);
|
|||
|
//根據LCAID新加folder
|
|||
|
// Thomas Mao 3/21 found error, the uploaded part use Lca folder but template folder
|
|||
|
//used here, can never work at all
|
|||
|
|
|||
|
ViewData["DownloadZipReport"] =baseUrl+ organizationLca.UploadZipReportUrl;
|
|||
|
ViewData["sources"] = parameterservice.GetNonYearlyParameterOptions(Categories.OtherCompound);
|
|||
|
return View(organizationLca);
|
|||
|
}
|
|||
|
|
|||
|
public ActionResult OrganizationLcaDetailLifecycleAssmt(int id)
|
|||
|
{
|
|||
|
var organizationLca = lcaDataService.GetOrganizationLCA(id);
|
|||
|
//return View(organizationLca);
|
|||
|
//根據LCAID新加folder
|
|||
|
// Thomas Mao 3/21 found error, the uploaded part use Lca folder but template folder
|
|||
|
//used here, can never work at all
|
|||
|
|
|||
|
ViewData["StageOptions"] = CScommon.ProgramConstants.lifeCycleStages;
|
|||
|
ViewData["DownloadZipReport"] =baseUrl+ organizationLca.UploadZipReportUrl;
|
|||
|
ViewData["sources"] = parameterservice.GetNonYearlyParameterOptions(Categories.OtherCompound);
|
|||
|
return View(organizationLca);
|
|||
|
}
|
|||
|
|
|||
|
public ActionResult OrganizationLcaDetailSignificance(int id)
|
|||
|
{
|
|||
|
var organizationLca = lcaDataService.GetOrganizationLCA(id);
|
|||
|
var query = significanceAssmtservice.GetList(id);
|
|||
|
|
|||
|
query = query.OrderBy(x => x.LifeCycleStage).ThenBy(x => x.ID);
|
|||
|
|
|||
|
var assmtFactors = significanceAssmtservice.GetAssmtFactors(id).ToList().Select(x =>
|
|||
|
new { x.ID, x.FactorName, FactorScores = x.FactorScores.Select(s => new { s.OptionScore, OptionDescription = $"({s.OptionScore}){s.OptionDescription}" }) });
|
|||
|
var lca = significanceAssmtservice.GetLCA(id);
|
|||
|
ViewData["StageOptions"] = CScommon.ProgramConstants.lifeCycleStages;
|
|||
|
ViewData["significanceAssmt"] = query.ToList();
|
|||
|
ViewData["AssmtFactors"] = assmtFactors;
|
|||
|
ViewData["GradingScore"] = lca.GradingScore;
|
|||
|
|
|||
|
return View(organizationLca);
|
|||
|
}
|
|||
|
public ActionResult SupplierLcaDetail(int supplierLcaId, int productLcaId)
|
|||
|
{
|
|||
|
ProductLCA supplierLca = lcaDataService.GetProductLCA(supplierLcaId);
|
|||
|
var viewModel = new ProductLcaViewModel();
|
|||
|
viewModel.ProductLca = supplierLca;
|
|||
|
/*
|
|||
|
if (supplierLca.PCRID == null)
|
|||
|
{
|
|||
|
viewModel.DirectMaterial = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.BOM);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
viewModel.DirectMaterial = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.DirectMaterial);
|
|||
|
}
|
|||
|
*/
|
|||
|
viewModel.DirectMaterial = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.DirectMaterial);
|
|||
|
viewModel.IndirectMaterial = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.IndirectMaterial);
|
|||
|
viewModel.WrapMaterial = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.WrapMaterial);
|
|||
|
viewModel.WorkHourHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.Septic);
|
|||
|
viewModel.PowerHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.Electric);
|
|||
|
viewModel.WaterHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.Water);
|
|||
|
viewModel.WasteWaterHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.WasteWater);
|
|||
|
viewModel.TransportHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.Transport);
|
|||
|
viewModel.WasteTransportHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.SheetHeaderWasteTransport);
|
|||
|
viewModel.VehicleHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.Vehicle);
|
|||
|
viewModel.GasolineHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.GasolineEquipment);
|
|||
|
viewModel.KitchenHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.Kitchen);
|
|||
|
viewModel.RefrigerantHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.Refrigerant);
|
|||
|
viewModel.FireEquipmentHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.FireEquipment);
|
|||
|
viewModel.SteamHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.Steam);
|
|||
|
viewModel.OtherHeader = this.sheetDataService.GetSheetHeader(supplierLcaId, Categories.OtherCompound);
|
|||
|
|
|||
|
ViewBag.ProductLcaId = productLcaId;
|
|||
|
|
|||
|
return View("ProductLcaDetail" ,viewModel);
|
|||
|
}
|
|||
|
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult ProductLcaConfirm(int lcaId)
|
|||
|
{
|
|||
|
lcaDataService.ProductLCAWaitToConfirmed(lcaId);
|
|||
|
return RedirectToAction("index", "Home");
|
|||
|
}
|
|||
|
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult ProductLcaReject(int lcaId)
|
|||
|
{
|
|||
|
lcaDataService.ProductLCAWaitToRejected(lcaId);
|
|||
|
return RedirectToAction("index", "Home");
|
|||
|
}
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult ProductLcaRefuse(int lcaId)
|
|||
|
{
|
|||
|
lcaDataService.LCARefuse(lcaId);
|
|||
|
return RedirectToAction("index", "Home");
|
|||
|
}
|
|||
|
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult OrganizationLcaConfirm(int lcaId)
|
|||
|
{
|
|||
|
lcaDataService.OrganizationLCAWaitToConfirmed(lcaId);
|
|||
|
return RedirectToAction("index", "Home");
|
|||
|
}
|
|||
|
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult OrganizationLcaReject(int lcaId)
|
|||
|
{
|
|||
|
lcaDataService.OrganizationLCAWaitToRejected(lcaId);
|
|||
|
return RedirectToAction("index", "Home");
|
|||
|
}
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult OrganizationLcaRefuse(int lcaId)
|
|||
|
{
|
|||
|
lcaDataService.LCARefuse(lcaId);
|
|||
|
return RedirectToAction("index", "Home");
|
|||
|
}
|
|||
|
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult ProductLcaChangeScheduledVerificationDate(int lcaId, ProductLcaViewModel model)
|
|||
|
{
|
|||
|
|
|||
|
lcaDataService.LcaChangeScheduledVerificationDate(lcaId, model.ProductLca.ScheduledVerificationDate);
|
|||
|
return RedirectToAction("ProductLcaDetail", "LCA", new { id = lcaId });
|
|||
|
}
|
|||
|
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult OrganizationLcaChangeScheduledVerificationDate(int lcaId, OrganizationLCA model)
|
|||
|
{
|
|||
|
|
|||
|
lcaDataService.LcaChangeScheduledVerificationDate(lcaId, model.ScheduledVerificationDate);
|
|||
|
return RedirectToAction("OrganizationLcaDetail", "LCA", new { id = lcaId });
|
|||
|
}
|
|||
|
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult OrganizationLcaUploadFile(int lcaId)
|
|||
|
{
|
|||
|
if (Request == null)
|
|||
|
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
|||
|
|
|||
|
HttpPostedFileBase file = Request.Files["UploadedFile"];
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if(file != null)
|
|||
|
{
|
|||
|
//string fileName = file.FileName.ToString();
|
|||
|
string fileName = "";
|
|||
|
string extesion = file.FileName.Substring(file.FileName.LastIndexOf(".") + 1);
|
|||
|
var storage = GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(Storage.AzureStorage)) as Storage.AzureStorage;
|
|||
|
var uri = storage.SaveToAzure(file.InputStream, file.FileName, baseUrl, "lca" + lcaId, false
|
|||
|
, $"{CScommon.ProgramConstants.OrganizationDownloadReply}.zip");
|
|||
|
if (uri.ToString().Contains("Browser_Local"))
|
|||
|
{
|
|||
|
fileName = uri.ToString().Substring(uri.ToString().IndexOf("Browser_Local") - 1);
|
|||
|
}
|
|||
|
//var fullFilePath = this.FileUploadHandler(file);
|
|||
|
lcaDataService.SaveCertificationZipFile(lcaId, fileName);
|
|||
|
TempData["successMsg"] = "File Import Success!";
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
TempData["errorMsg"] = exception.Message;
|
|||
|
return RedirectToAction("OrganizationLcaDetail","LCA", new { id = lcaId });
|
|||
|
}
|
|||
|
|
|||
|
return RedirectToAction("OrganizationLcaDetail", "LCA", new { id = lcaId });
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
[System.Web.Mvc.HttpPost]
|
|||
|
public ActionResult ProductLcaUploadFile(int lcaId)
|
|||
|
{
|
|||
|
if (Request == null)
|
|||
|
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
|||
|
|
|||
|
HttpPostedFileBase file = Request.Files["UploadedFile"];
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (file != null)
|
|||
|
{
|
|||
|
//string fileName = file.FileName.ToString();
|
|||
|
string fileName = "";
|
|||
|
string extesion = file.FileName.Substring(file.FileName.LastIndexOf(".") + 1);
|
|||
|
var storage = GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(Storage.AzureStorage)) as Storage.AzureStorage;
|
|||
|
var uri = storage.SaveToAzure(file.InputStream, file.FileName, baseUrl, "lca" + lcaId, false
|
|||
|
, $"{CScommon.ProgramConstants.ProductDownloadReply}.zip");
|
|||
|
if (uri.ToString().Contains("Browser_Local"))
|
|||
|
{
|
|||
|
fileName = uri.ToString().Substring(uri.ToString().IndexOf("Browser_Local") - 1);
|
|||
|
}
|
|||
|
//var fullFilePath = this.FileUploadHandler(file);
|
|||
|
lcaDataService.SaveCertificationZipFile(lcaId, fileName);
|
|||
|
TempData["successMsg"] = "File Import Success!";
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception exception)
|
|||
|
{
|
|||
|
TempData["errorMsg"] = exception.Message;
|
|||
|
return RedirectToAction("ProductLcaDetail", "LCA", new { id = lcaId });
|
|||
|
}
|
|||
|
|
|||
|
return RedirectToAction("ProductLcaDetail", "LCA", new { id = lcaId });
|
|||
|
}
|
|||
|
}
|
|||
|
}
|