demo20230512/Controllers/Api/ApiControllerBase.cs
2023-05-12 10:20:28 +08:00

125 lines
4.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Data.Entity;
using Weee.Models;
using Weee.DAL;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Weee.Service;
using Weee.Models.Paramemter;
using CScommon;
using System.Security.Claims;
using Resources;
using NLog;
using System.Web.Http.Controllers;
using System.Web;
namespace Weee.Controllers
{
[Authorize(Roles = ProgramConstants.normalcompany)]
//[Filter.ApiMultilanguage]disable obsolete warning, not sure OK or not
public class ApiControllerBase : ApiController
{
protected WeeeDataAuthorizeService _authorizeService;
protected Dictionary<int, string> activityItems = new Dictionary<int, string>();
protected Dictionary<int, string> emitParaItems = new Dictionary<int, string>();
protected Logger log;
//protected string baseUrl = "";
public ApiControllerBase(WeeeDataAuthorizeService s)
{
_authorizeService = s;
_authorizeService.Initialize(User.Identity.GetUserId());
//db = d;
//List<SelectListItem> activityItems = new List<SelectListItem>();
//activityItems.Add(0, Resource.StaticLabelGlobal_Select);
activityItems.Add( 1, Resource.autoContinuousMeasure );
activityItems.Add( 2, Resource.indirectMeasure );
activityItems.Add( 3, Resource.selfEstimate );
//tempd.activityItems = activityItems;
//List<SelectListItem> emitParaItems = new List<SelectListItem>();
//emitParaItems.Add(0, Resource.StaticLabelGlobal_Select);
emitParaItems.Add( 1, Resource.measureEnergyBalance );
emitParaItems.Add( 2, Resource.sameSituationExperience );
emitParaItems.Add( 3, Resource.factorFromManufacturer );
emitParaItems.Add( 4, Resource.regionEmissionFactor );
emitParaItems.Add( 5, Resource.nationEmissionFactor );
emitParaItems.Add( 6, Resource.internationalFactor );
//ViewBag.emitParaItems = emitParaItems;
log = NLog.LogManager.GetCurrentClassLogger();
}
/**
* Shared code for LCA SaveHeader API
*/
protected HttpResponseMessage SaveSheetHeader(WeeeSheetDataService service, Categories category, SheetHeader header)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
header.Category = category;
service.SaveSheetHeader(header);
return Request.CreateResponse(HttpStatusCode.OK, 0);
}
protected HttpResponseMessage SaveSheetHeader(WaterUsageDataService service, Categories category, SheetHeader header)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
header.Category = category;
service.SaveSheetHeader(header);
return Request.CreateResponse(HttpStatusCode.OK, 0);
}
protected string GetCurrentUserId()
{
var principal = User as ClaimsPrincipal;
var claim = principal.FindFirst(ClaimTypes.NameIdentifier);
return claim != null ? claim.Value : null;
}
protected string getBaseUrl() {
string baseUrl = Request.RequestUri.ToString();//.GetLeftPart(UriPartial.Authority);
//Logger log = NLog.LogManager.GetCurrentClassLogger();
//log.Info($"getBaseUrl {Request.RequestUri} {baseUrl}");
string actPath = HttpContext.Current.Request.Url.Authority;
string protocolName;
if (HttpContext.Current.Request.IsSecureConnection)
protocolName = "https://";
else
protocolName = "http://";
string removeLeft = protocolName + actPath;
if (baseUrl.IndexOf(removeLeft)==0)
baseUrl = baseUrl.Substring(removeLeft.Length, baseUrl.Length-removeLeft.Length);
else {
return "";
}
//log.Info($"getBaseUrl 2 {baseUrl} {protocolName} {actPath}");
if (baseUrl.Length > 0) {
string[] words = baseUrl.Split('/');
if (words.Length > 0) {
if (words[1] == "api")
baseUrl = "";
else
baseUrl = "/" + words[1];
}
else
baseUrl = "";
//if (baseUrl.Substring(baseUrl.Length - 1) == "/")
// baseUrl = baseUrl.Substring(0, baseUrl.Length - 1);
}
//log.Info($"getBaseUrl 3 {baseUrl}");
return baseUrl;
}
}
}