137 lines
4.4 KiB
C#
137 lines
4.4 KiB
C#
using System.Drawing.Imaging;
|
|
using System.IO;
|
|
using System.Web;
|
|
using System.Web.Mvc;
|
|
using ZXing;
|
|
using ZXing.QrCode;
|
|
using Newtonsoft.Json;
|
|
using System.Collections.Generic;
|
|
using ZXing.Common;
|
|
using System.Reflection;
|
|
|
|
namespace QR_GEN.Controllers
|
|
{
|
|
public class HomeController : Controller
|
|
{
|
|
/// <summary>
|
|
/// Struct x richiesta serializzata/deserializzata
|
|
/// </summary>
|
|
public struct qrRequest
|
|
{
|
|
public string valore;
|
|
}
|
|
/// <summary>
|
|
/// Payload da deserializzare json
|
|
/// </summary>
|
|
public struct qrPayload
|
|
{
|
|
public string baseUrl { get; set; }
|
|
public string[] parameters { get; set; }
|
|
}
|
|
|
|
|
|
|
|
public ActionResult Index()
|
|
{
|
|
var assembly = Assembly.GetCallingAssembly();
|
|
ViewBag.Version = assembly.GetName().Version;
|
|
string company = "Steamware";
|
|
object[] attribs = assembly.GetCustomAttributes(typeof(AssemblyCompanyAttribute), true);
|
|
if (attribs.Length > 0)
|
|
{
|
|
company = ((AssemblyCompanyAttribute)attribs[0]).Company;
|
|
}
|
|
ViewBag.CopyRight = company;
|
|
return View();
|
|
}
|
|
|
|
public RedirectResult steamware()
|
|
{
|
|
return Redirect("https://www.steamware.net");
|
|
}
|
|
/// <summary>
|
|
/// Restituisce un QR code dato valore
|
|
/// </summary>
|
|
/// <param name="id">id x impostare SITO x jumper</param>
|
|
/// <param name="val">valore delle opzioni da embeddare</param>
|
|
/// <returns></returns>
|
|
public ActionResult QR_site(string id, string val)
|
|
{
|
|
string cmdArg = "";
|
|
// se vuoto stea,ware...
|
|
if (id == null || id == "")
|
|
{
|
|
cmdArg = "www.steamware.net";
|
|
}
|
|
#if false
|
|
// se arriva modo json --> deserializzo
|
|
if (id.IndexOf("{") >= 0)
|
|
{
|
|
var richiesta = JsonConvert.DeserializeObject<qrRequest>(id);
|
|
id = richiesta.valore;
|
|
}
|
|
#endif
|
|
|
|
|
|
#if false
|
|
// url decode...
|
|
id = HttpUtility.UrlDecode(id);
|
|
#endif
|
|
|
|
// valutare se usare file web.config, file .ini, file conf generico...
|
|
|
|
string tgtUrl = "";
|
|
// se l'
|
|
|
|
// in base a richiesta compongo stringa ...
|
|
switch (id)
|
|
{
|
|
case "CTRACK_ELET_SCAL":
|
|
tgtUrl = @"ctrack.steamware.net/elet-scal/jumper?USER_NAME=info@elettronicascalvina.it&UserAuthkey=asdfbqhewrqg7802345bhasdfg78&CodOpr=";
|
|
break;
|
|
case "CTRACK_ELET_SCAL_UFF":
|
|
tgtUrl = @"http://192.168.1.117/CTRACK/jumper?USER_NAME=info@elettronicascalvina.it&UserAuthkey=asdfbqhewrqg7802345bhasdfg78&CodOpr=";
|
|
break;
|
|
case "CTRACK_SERIATE":
|
|
tgtUrl = @"http://10.74.82.219/CTRACK/jumper?USER_NAME=info@elettronicascalvina.it&UserAuthkey=asdfbqhewrqg7802345bhasdfg78&CodOpr=";
|
|
break;
|
|
case "CTRACK_COLCOM":
|
|
tgtUrl = @"http://192.168.0.113/MP/CTRACK/jumper?USER_NAME=opr_mon&UserAuthkey=AK_sdurb4930r2d&CodOpr=";
|
|
break;
|
|
case "JSON":
|
|
// devo DESERIALIZZARE...
|
|
var obj = JsonConvert.DeserializeObject<qrPayload>(val);
|
|
// metto tutto in tgtUrl...
|
|
tgtUrl = string.Format(obj.baseUrl, obj.parameters);
|
|
// svuoto val...
|
|
val = "";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
cmdArg = string.Format("{0}{1}", tgtUrl, val);
|
|
// creo!
|
|
QrCodeEncodingOptions options = new QrCodeEncodingOptions
|
|
{
|
|
DisableECI = true,
|
|
CharacterSet = "UTF-8",
|
|
Width = 600,
|
|
Height = 600,
|
|
Margin = 0
|
|
};
|
|
var writer = new BarcodeWriter();
|
|
writer.Format = BarcodeFormat.QR_CODE;
|
|
writer.Options = options;
|
|
// scrivo bitmap
|
|
var pixelData = writer.Write(cmdArg);
|
|
|
|
// Return Image
|
|
MemoryStream ms = new MemoryStream();
|
|
pixelData.Save(ms, ImageFormat.Png);
|
|
ms.Position = 0;
|
|
return new FileStreamResult(ms, "image/png");
|
|
}
|
|
|
|
|
|
}
|
|
} |