using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using Weee.Filter; using Weee.Models; using Weee.Models.Paramemter; using Weee.Service; using PagedList; using Resources; using System.Web; using System.IO; namespace Weee.Controllers { //[MvcMultilanguage]disable obsolete warning, not sure OK or not public class KitchenController : ApiControllerBase { private readonly WeeeParameterDataService parameterservice; private readonly WeeeSheetDataService service; public KitchenController(WeeeSheetDataService d, WeeeParameterDataService s) : base(d) { service = d; parameterservice = s; } [Route("api/Kitchen/GetByLcaId/{LCAID}/")] //[Filter.ApiMultilanguage]disable obsolete warning, not sure OK or not public object GetByLcaId(int LCAID) { LCA lca = service.GetLCA(LCAID); var query = //service.GetSheet(LCAID); service.getKitchenWithFactor(LCAID); object ret= new { Kitchens = query.ToList(), Options = parameterservice.GetYearlyParameterOptions((lca.LCAType.Name == "ProductLCA") ? Categories.KitchenProduct : Categories.Kitchen), WarmGasTypes = parameterservice.GetYearlyParameterWarmGasTypes((lca.LCAType.Name == "ProductLCA") ? Categories.KitchenProduct : Categories.Kitchen), SheetHeader = service.GetSheetHeader(LCAID, (lca.LCAType.Name == "ProductLCA") ? Categories.KitchenProduct : Categories.Kitchen), ActivityOptions = activityItems, EmitParaOptions = emitParaItems }; return ret; } [Route("api/Kitchen/SaveAll")] [HttpPost] [ApiEditableAttribute("toBeSave", true)] public object SaveAll(IEnumerable toBeSave) { if (!ModelState.IsValid) { throw new Exception("error"); } var dic = service.getN2OandCH4Factors(toBeSave.First().LCAID); LCA lca = service.GetLCA(toBeSave.First().LCAID); foreach (var rec in toBeSave) { if (rec.ParameterID > 0) { if (rec.Parameter == null) rec.Parameter = parameterservice.GetYearlyParameter((int)rec.ParameterID); rec.ParameterValue = (lca.LCAType.Name == "ProductLCA") ? rec.Parameter.Value : (rec.Parameter.CO2Value + rec.Parameter.CH4Value * dic["CH4"] + rec.Parameter.N2OValue * dic["N2O"]); //rec.ParameterValue = rec.Parameter.CO2Value + rec.Parameter.CH4Value * dic["CH4"] + rec.Parameter.N2OValue * dic["N2O"]; rec.KgCO2e = rec.ParameterValue * rec.Scalar; if (rec.activityDataType == 0) // 帶出年度預設值 { rec.activityDataType = rec.Parameter.Type.activityDataType; } if (rec.emitParaType == 0) // 帶出年度預設值 { rec.emitParaType = rec.Parameter.Type.emitParaType; } } } var result = service.SaveSheet(toBeSave); var resultIDs = result.Select(y => y.ID).ToList(); var query = service.getKitchenWithFactor(result.First().LCAID).Where(x => resultIDs.Contains(x.ID)).ToList(); return new { result = query }; } [Route("api/Kitchen/SaveSheetHeader")] [HttpPost] public HttpResponseMessage SaveHeader(SheetHeader header) { LCA lca = service.GetLCA(header.LCAID); return this.SaveSheetHeader(service, (lca.LCAType.Name == "ProductLCA") ? Categories.KitchenProduct : Categories.Kitchen, header); } [Route("api/Kitchen/Save/{LCAID}/{id}")] [HttpPost] [ApiEditableAttribute("toBeSave", false)] public Object Save(int LCAID, int id, LCACommonSurveyForm_Kitchens toBeSave) { //toBeSave.ReferenceFileUrl=getBaseUrl()+toBeSave.ReferenceFileUrl; //toBeSave.ReferencePhotoUrl = getBaseUrl() + toBeSave.ReferencePhotoUrl; if (!ModelState.IsValid) { return BadRequest(); } if (id != toBeSave.ID || LCAID != toBeSave.LCAID) { return BadRequest(); } toBeSave.Scalar = Math.Round(toBeSave.Scalar, 4); if (toBeSave.ParameterID > 0) { if (toBeSave.Parameter == null) toBeSave.Parameter = parameterservice.GetYearlyParameter((int)toBeSave.ParameterID); var dic = service.getN2OandCH4Factors(LCAID); LCA lca = service.GetLCA(LCAID); //toBeSave.ParameterValue = toBeSave.Parameter.CO2Value + toBeSave.Parameter.CH4Value * dic["CH4"] + toBeSave.Parameter.N2OValue * dic["N2O"]; toBeSave.ParameterValue = (lca.LCAType.Name == "ProductLCA") ? toBeSave.Parameter.Value : (toBeSave.Parameter.CO2Value + toBeSave.Parameter.CH4Value * dic["CH4"] + toBeSave.Parameter.N2OValue * dic["N2O"]); toBeSave.KgCO2e = toBeSave.ParameterValue * toBeSave.Scalar; if (toBeSave.activityDataType == 0) // 帶出年度預設值 { toBeSave.activityDataType = toBeSave.Parameter.Type.activityDataType; } if (toBeSave.emitParaType == 0) // 帶出年度預設值 { toBeSave.emitParaType = toBeSave.Parameter.Type.emitParaType; } } if (toBeSave.Scalar==0) toBeSave.KgCO2e = 0; service.SaveSheetItem(toBeSave); var storage = GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(Storage.AzureStorage)) as Storage.AzureStorage; if (!string.IsNullOrWhiteSpace(toBeSave.ReferenceFileUrl) && toBeSave.ReferenceFileUrl.Contains("kf_")) { var uri = toBeSave.ReferenceFileUrl; uri = uri.Replace("kf_", "kf" + toBeSave.ID + "_"); storage.MoveToAzure(toBeSave.ReferenceFileUrl, uri); toBeSave.ReferenceFileUrl = uri; } if (!string.IsNullOrWhiteSpace(toBeSave.ReferencePhotoUrl) && toBeSave.ReferencePhotoUrl.Contains("kp_")) { var uri = toBeSave.ReferencePhotoUrl; uri = uri.Replace("kp_", "kp" + toBeSave.ID + "_"); storage.MoveToAzure(toBeSave.ReferencePhotoUrl, uri); toBeSave.ReferencePhotoUrl = uri; } service.SaveSheetItem(toBeSave); var query = service.getKitchenWithFactor(LCAID).Where(x => x.ID == toBeSave.ID); return query.ToList().First(); } [Route("api/Kitchen/DeleteAll/{LCAID}")] [HttpDelete] public IHttpActionResult DeleteAll(int LCAID) { service.DeleteSheet(LCAID); return Ok(); } [Route("api/Kitchen/Delete/{ID}")] [HttpDelete] public IHttpActionResult Delete(int ID) { service.DeleteSheetItem(ID); return Ok(); } [Route("api/Kitchen/GetWarmGasType")] //[Filter.ApiMultilanguage]disable obsolete warning, not sure OK or not public object GetWarmGasType() { object[] warmGasType = { new { Id = WarmGasType.固定源, Text = Resource.fixedSource }, new { Id = WarmGasType.移動源, Text = Resource.movingSource }, new { Id = WarmGasType.製程, Text = Resource.manufactureSource }, new { Id = WarmGasType.逸散, Text = Resource.escapeSource }, new { Id = WarmGasType.土地使用, Text = Resource.landUsageSource }, new { Id = WarmGasType.外購能源, Text = Resource.externalEnergySource } }; object ret = new { WarmGasType = warmGasType }; return ret; } [Route("api/Kitchen/GetByLcaIdAndWarmGasType/{LCAID}/{WarmGasType}")] //[Filter.ApiMultilanguage]disable obsolete warning, not sure OK or not public object GetByLcaIdAndWarmGasType(int LCAID, int WarmGasType) { LCA lca = service.GetLCA(LCAID); var query = //service.GetSheet(LCAID); service.getKitchenFilterWarmGasTypeWithFactor(LCAID, WarmGasType); object ret = new { Kitchens = query.ToList(), //Options = parameterservice.GetYearlyParameterOptions(Categories.Kitchen), //WarmGasTypes = parameterservice.GetYearlyParameterWarmGasTypes(Categories.Kitchen), //SheetHeader = service.GetSheetHeader(LCAID, Categories.Kitchen), Options = parameterservice.GetYearlyParameterOptions((lca.LCAType.Name == "ProductLCA") ? Categories.KitchenProduct : Categories.Kitchen), WarmGasTypes = parameterservice.GetYearlyParameterWarmGasTypes((lca.LCAType.Name == "ProductLCA") ? Categories.KitchenProduct : Categories.Kitchen), SheetHeader = service.GetSheetHeader(LCAID, (lca.LCAType.Name == "ProductLCA") ? Categories.KitchenProduct : Categories.Kitchen), ActivityOptions = activityItems, EmitParaOptions = emitParaItems }; return ret; } } }