using framework_business;
using framework_library;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class controls_module_surfaceSignature : System.Web.UI.UserControl, ISurfaceControlBase
{
private enum FileExtension { pdf, doc, docx, xls, xlsx, txt, jpg, jpeg, png, gif, htm, html }
#region override
///
/// Reload Control
///
///
///
///
public void ReloadControl(oSurfaceFieldData controlFieldData, bool alternateView = false, bool readOnly = false)
{
try
{
try
{
//Setup validation group
ISurfaceBase parent = (ISurfaceBase)this.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent;
string parentName = parent.AppRelativeVirtualPath;
int iLastIndex = parentName.LastIndexOf("/") + 1;
string validate = parentName.Substring(iLastIndex).Replace("_form.ascx", "");
btnAddSignature.ValidationGroup = validate;
}
catch
{ }
_SurfaceSignature.itemId = controlFieldData.surfaceItemId;
foreach (oSurfaceField field in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceField), "recId", controlFieldData.surfaceFieldID.ToString()))
{
_SurfaceSignature.fieldId = field.recId;
break;
}
if (_SurfaceSignature.itemId > 0)
{
foreach (oSurfaceSignature sig in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceSignature), "fieldId,itemId", _SurfaceSignature.fieldId + "," + _SurfaceSignature.itemId))
{
_SurfaceSignature = sig;
break;
}
}
PopulateSignatureControl();
//PreventOverwriteProvider.EnableImageProvider(this, imgEdSignature);
}
catch (Exception ex)
{
exception.HandleException("fileUploader:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Save Control Data
///
///
public void SaveControlData(ref oSurfaceFieldData _surfaceFieldData)
{
try
{
SaveSignatureControlValues();
if (_SurfaceSignature.recId > 0)
{
if (xData.UpdateTyped("recId", _SurfaceSignature.recId.ToString(), typeof(oSurfaceSignature), _SurfaceSignature))
{
}
}
else
{
_SurfaceSignature.recId = xData.SaveTyped("recId", typeof(oSurfaceSignature), _SurfaceSignature);
if (_SurfaceSignature.recId > 0)
{
}
}
}
catch (Exception ex)
{
exception.HandleException("surface:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
#endregion
#region Methods
///
/// Populate Signature Control
///
private void PopulateSignatureControl()
{
try
{
//fetch configurtaion
oSurfaceSignatureConfig _config = new oSurfaceSignatureConfig();
foreach (oSurfaceSignatureConfig conf in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceSignatureConfig), "fieldId", _SurfaceSignature.fieldId.ToString()))
{
_config = conf;
break;
}
//signature image handling
if (_SurfaceSignature.signatureFile != String.Empty)
{
imgSignature.ImageUrl = "~/upload/" + _SurfaceSignature.signatureFile;
lblSignatureDate.Text = utils.formatDateToString(_SurfaceSignature.signatureDate);
grpDateSigned.Visible = true;
if (_config.allowSignatureEdit)
{
btnAddSignature.Visible = true;
btnAddSignature.Text = "Redo Signature";
}
else
{ btnAddSignature.Visible = false; }
}
else
{
btnAddSignature.Visible = true;
grpDateSigned.Visible = false;
}
//signature photo
pnlImagePhoto.Visible = _config.includePhoto;
if (_SurfaceSignature.photoFile != String.Empty)
{
imgSignaturePhoto.ImageUrl = "~/upload/" + _SurfaceSignature.photoFile;
imgSignaturePhoto.CssClass = "img-responsive img-circle";
lblPhotoDate.Text = utils.formatDateToString(_SurfaceSignature.photoDate);
grpDatePhotoTaken.Visible = true;
if (_config.allowPhotoEdit)
{ fuSignaturePicture.Visible = true; lnkSavePhoto.Visible = true; }
else
{ fuSignaturePicture.Visible = false; lnkSavePhoto.Visible = false; }
}
else
{
fuSignaturePicture.Visible = true;
lnkSavePhoto.Visible = true;
grpDatePhotoTaken.Visible = false;
}
lblSignatureText.Text = _config.labelText;
lblDisclaimer.Text = _config.disclaimer;
txtSignatureAuthoritive.Text = _SurfaceSignature.authoritive;
}
catch (Exception ex)
{
exception.HandleException("surfaceSignature:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Save Signature Values
///
private void SaveSignatureControlValues()
{
try
{
_SurfaceSignature.authoritive = txtSignatureAuthoritive.Text;
_SurfaceSignature.isActive = true;
}
catch (Exception ex)
{
exception.HandleException("surfaceSignature:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
#endregion
#region events
///
/// Page Load Event
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
}
///
/// Add Signature Button
///
///
///
protected void btnAddSignature_Click(object sender, EventArgs e)
{
try
{
ISurfaceBase parent = (ISurfaceBase)this.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent;
if (_SurfaceSignature.itemId == 0)
{
// If this is a new property, we need to save the gallery top down (Parent => Gallery)
parent.SaveControl(false, false, false);
}
string scriptVar = "$('#" + pnlSignatureModal.ClientID + "').closest('div').find('.modSignatureModal').modal(); SetupJSignature('" + palSig.ClientID + "')";
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "mySurfaceFileUploaderModal", scriptVar, true);
}
catch (Exception ex)
{
exception.HandleException("surfaceSignature:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// File Uploaded event
///
///
///
protected void fuSignaturePicture_FileUploaded(object sender, Telerik.Web.UI.FileUploadedEventArgs e)
{
try
{
ISurfaceBase parent = (ISurfaceBase)this.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent;
if (_SurfaceSignature.itemId == 0)
{
// If this is a new property, we need to save the gallery top down (Parent => Gallery)
parent.SaveControl(false, false, false);
}
string signaturePhotoFolder = "surface/";
signaturePhotoFolder += _SurfaceSignature.itemId;
string randomFileName = utils.RandomString(5, true) + "_" + e.File.FileName.Substring(e.File.FileName.LastIndexOf(".")) + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm");
string filePath = Server.MapPath("~/upload/" + signaturePhotoFolder + "/signature/photo/");
utils.validateFolder(filePath);
//save to file system with new image name
e.File.SaveAs(filePath + randomFileName + e.File.GetExtension());
_SurfaceSignature.photoFile = signaturePhotoFolder + "/signature/photo/" + randomFileName + e.File.GetExtension();
_SurfaceSignature.photoDate = DateTime.Now;
}
catch (Exception ex)
{
exception.HandleException("surfaceSignature:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Save Photo
///
///
///
protected void lnkSavePhoto_Click(object sender, EventArgs e)
{
try
{
if (_SurfaceSignature.photoFile != String.Empty)
{
SaveSignatureControlValues();
if (_SurfaceSignature.recId > 0)
{
if (xData.UpdateTyped("recId", _SurfaceSignature.recId.ToString(), typeof(oSurfaceSignature), _SurfaceSignature))
{
PopulateSignatureControl();
}
}
else
{
_SurfaceSignature.recId = xData.SaveTyped("recId", typeof(oSurfaceSignature), _SurfaceSignature);
if (_SurfaceSignature.recId > 0)
{
PopulateSignatureControl();
}
}
}
}
catch (Exception ex)
{
exception.HandleException("surfaceSignature:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Save the Drawn Signature
///
///
///
protected void lnklSaveSignature_Click(object sender, EventArgs e)
{
try
{
string signatureFolder = "surface/";
signatureFolder += _SurfaceSignature.itemId;
string randomFileName = utils.RandomString(9, true) + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm") + ".png";
string filePath = Server.MapPath("~/upload/" + signatureFolder + "/signature/");
utils.validateFolder(filePath);
//save
SaveSignatureControlValues();
//get base 64 string
string imgData = hfSigImgValue.Value;
//convert to byte array
byte[] bytes = Convert.FromBase64String(imgData.Replace("data:image/png;base64,", ""));
System.Drawing.Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = System.Drawing.Image.FromStream(ms);
}
image.Save(filePath + randomFileName, System.Drawing.Imaging.ImageFormat.Png);
image.Dispose();
_SurfaceSignature.signatureFile = signatureFolder + "/signature/" + randomFileName;
_SurfaceSignature.signatureDate = DateTime.Now;
if (_SurfaceSignature.recId > 0)
{
if (xData.UpdateTyped("recId", _SurfaceSignature.recId.ToString(), typeof(oSurfaceSignature), _SurfaceSignature))
{
PopulateSignatureControl();
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "mySurfaceSignatureModalClose", "TaskFileUploadCancel(); $('#" + pnlSignatureModal.ClientID + "').closest('div').find('.modSignatureModal').modal('hide');$('body').removeClass('modal-open');", true);
}
}
else
{
_SurfaceSignature.recId = xData.SaveTyped("recId", typeof(oSurfaceSignature), _SurfaceSignature);
if (_SurfaceSignature.recId > 0)
{
PopulateSignatureControl();
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "mySurfaceSignatureModalClose", "TaskFileUploadCancel(); $('#" + pnlSignatureModal.ClientID + "').closest('div').find('.modSignatureModal').modal('hide');$('body').removeClass('modal-open');", true);
}
}
}
catch (Exception ex)
{
exception.HandleException("surfaceSignature:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
#endregion
#region Properties
private oSurfaceSignature _SurfaceSignature
{
get
{
if (ViewState["surfaceSignature"] != null)
{
return (oSurfaceSignature)ViewState["surfaceSignature"];
}
else
{
ViewState["surfaceSignature"] = new oSurfaceSignature();
return (oSurfaceSignature)ViewState["surfaceSignature"];
}
}
set
{
ViewState["surfaceSignature"] = value;
}
}
#endregion
}