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

231 lines
9.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.Entity;
using Weee.Models;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity;
using Weee.DAL;
using PagedList;
using Weee.ViewModels;
using Resources;
using CScommon;
using System.Net;
namespace Weee.Areas.Certification.Controllers
{
[Authorize(Roles = ProgramConstants.certification)]
public class HomeController : CertificationControllerBase
{
//private WeeeDataContext _db;
private int? currentcompanyid;
public HomeController(WeeeDataContext db)
: base(db)
{
//this._db = db;
}
// GET: /Consultant/Home/
public ActionResult Index()
{
//Start CFT-30
//var verifyLCAs = _db.LCAs
// .Where(x => x.Status == LCAStatus.Waiting
// && x.VerifierCompanyID == currentcompanyid)
// .OrderByDescending(x => x.ID)
// .ToList();
var verifyLCAs = GetVerifyLCADataList((int)currentcompanyid, LCAStatus.Waiting);
//End CFT-30
//var verifyLCAs = (from a in _db.LCAs
// join b in _db.ProductLCAs on a.ID equals b.ID into ab
// from c in ab.DefaultIfEmpty()
// join d in _db.Products on c.ProductID equals d.ID into cd
// from e in cd.DefaultIfEmpty()
// where a.Status == LCAStatus.Waiting
// && a.VerifierCompanyID == currentcompanyid
// select new CertificationViewModel
// {
// ID = a.ID,
// LCAname = a.LCAname,
// StartDate = a.StartDate,
// EndDate = a.EndDate,
// LCATypeName = (c == null) ? Resource.StaticLabelOrganizationLCA
// : Resource.StaticLabelProductLCA,
// Description = a.Description,
// CreatedDate = a.CreatedDate,
// LCAitemName = e.Name
// })
// .OrderByDescending(x => x.ID)
// .ToList();
return View(verifyLCAs);
}
public ActionResult All(int page = 1, string searchString = "")
{
var query = db.LCAs
.Where(x => x.VerifierCompanyID == currentcompanyid)
//.Where(x => x.Status != LCAStatus.Waiting || x.Status != LCAStatus.New);
;
if (searchString != "")
query = query.Where(x => x.Description.Contains(searchString));
var LCAs = query.OrderByDescending(x => x.ID).ToPagedList(page, 20);
var onePage = LCAs;
ViewBag.SearchString = searchString;
return View(LCAs);
}
public ActionResult LCAStatusNew()
{
//Start CFT-30
//var verifyLCAs = _db.LCAs
// .Where(x => x.Status == LCAStatus.New
// && x.VerifierCompanyID == currentcompanyid)
// .OrderByDescending(x => x.ID)
// .ToList();
var verifyLCAs = GetVerifyLCADataList((int)currentcompanyid, LCAStatus.New);
//End CFT-30
return View(verifyLCAs);
}
public ActionResult LCAStatusProcessing()
{
//Start CFT-30
//var verifyLCAs = _db.LCAs
// .Where(x => x.Status == LCAStatus.Processing
// && x.VerifierCompanyID == currentcompanyid)
// .OrderByDescending(x => x.ID)
// .ToList();
var verifyLCAs = GetVerifyLCADataList((int)currentcompanyid, LCAStatus.Processing);
//End CFT-30
return View(verifyLCAs);
}
public ActionResult LCAStatusRejected()
{
//Start CFT-30
//var verifyLCAs = _db.LCAs
// .Where(x => x.Status == LCAStatus.Rejected
// && x.VerifierCompanyID == currentcompanyid)
// .OrderByDescending(x => x.ID)
// .ToList();
var verifyLCAs = GetVerifyLCADataList((int)currentcompanyid, LCAStatus.Rejected);
//End CFT-30
return View(verifyLCAs);
}
public ActionResult LCAStatusConfirmed()
{
//Start CFT-30
//var verifyLCAs = _db.LCAs
// .Where(x => x.Status == LCAStatus.Confirmed
// && x.VerifierCompanyID == currentcompanyid)
// .OrderByDescending(x => x.ID)
// .ToList();
var verifyLCAs = GetVerifyLCADataList((int)currentcompanyid, LCAStatus.Confirmed);
//End CFT-30
return View(verifyLCAs);
}
public ActionResult LCAStatusCompleted()
{
//Start CFT-30
//var verifyLCAs = _db.LCAs
// .Where(x => x.Status == LCAStatus.Completed
// && x.VerifierCompanyID == currentcompanyid)
// .OrderByDescending(x => x.ID)
// .ToList();
var verifyLCAs = GetVerifyLCADataList((int)currentcompanyid, LCAStatus.Completed);
//End CFT-30
return View(verifyLCAs);
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var loggedInUserId = User.Identity.GetUserId();
currentcompanyid = db.Users.AsNoTracking().First(x => x.Id == loggedInUserId).CompanyID;
base.OnActionExecuting(filterContext);
}
//CFT-30
public List<CertificationViewModel> GetVerifyLCADataList( int companyID, LCAStatus status)
{
var verifyLCAs = (from a in db.LCAs
join b in db.ProductLCAs on a.ID equals b.ID into ab
from c in ab.DefaultIfEmpty()
join d in db.Products on c.ProductID equals d.ID into cd
from e in cd.DefaultIfEmpty()
where a.Status == status
&& a.VerifierCompanyID == companyID
select new CertificationViewModel
{
ID = a.ID,
LCAname = a.LCAname,
StartDate = a.StartDate,
EndDate = a.EndDate,
LCATypeName = (c == null) ? Resource.StaticLabelOrganizationLCA
: Resource.StaticLabelProductLCA,
Description = a.Description,
CreatedDate = a.CreatedDate,
LCAitemName = e.Name
})
.OrderByDescending(x => x.ID)
.ToList();
return verifyLCAs;
}
public ActionResult UploadFileFA(int updType)
{
if (Request == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
HttpPostedFileBase file = Request.Files["UploadedFile"];
try
{
if (file.ContentLength == 0)
{
TempData["ErrMsg"] = "未選擇檔案";
return RedirectToAction("Index");
}
if (file != null)
{
var userNm = User.Identity.GetUserName();
string newFileName = "";
if (updType == 1) newFileName = ProgramConstants.OrganizationLCAApplicationFile;
else if (updType == 2) newFileName = ProgramConstants.ProductLCAApplicationFile;
string extesion = file.FileName.Substring(file.FileName.LastIndexOf(".") + 1);
if (extesion.ToLower() != "zip")
{
TempData["ErrMsg"] = "僅支持zip類型";
return RedirectToAction("Index");
}
var storage = System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(Storage.AzureStorage)) as Storage.AzureStorage;
var uri = storage.SaveToAzure(file.InputStream, file.FileName, baseUrl, userNm, false
, newFileName);
TempData["SuccessMsg"] = "[" + newFileName + "]上傳成功";
return RedirectToAction("Index");
}
else
{
TempData["ErrMsg"] = "上傳失敗";
return RedirectToAction("Index");
}
}
catch (Exception ex)
{
TempData["ErrMsg"] = ex.Message;
return RedirectToAction("Index");
}
}
}
}