Files
GPW/GPW_Smart/WebUserControls/mod_mancTimb.ascx.cs
T
2022-01-13 12:54:59 +01:00

220 lines
7.7 KiB
C#

using GPW_data;
using SteamWare;
using System;
using System.Globalization;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GPW.WebUserControls
{
public partial class mod_mancTimb : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
// salvo data corrente x filtraggi...
if (!Page.IsPostBack)
{
memLayer.ML.setSessionVal("today", DateTime.Today.ToShortDateString());
// imposto entrata
rblEntrata.SelectedIndex = 0;
presetDateTime();
chkShowAll.Visible = userCanApprove;
}
checkFixOds();
}
private void presetDateTime()
{
// imposto valori selezionati a metà
DateTime adesso = DateTime.Now;
// arrotondo a 5 minuti...
int minuti = adesso.Minute;
adesso = adesso.AddMinutes(-minuti).AddMinutes((minuti / 5) * 5);
mod_dateTime.valoreDateTime = adesso;
}
public event EventHandler ev_reqUpdate;
/// <summary>
/// registro timbratura NON APPROVATA
/// </summary>
/// <param name="isEntrata"></param>
/// <returns></returns>
private void registraTimbraturaNonApp(bool isEntrata, DateTime dataOra)
{
// salvo evento entrata...
string IPv4 = "";
bool approvata = false; // è una richiesta!!!!
if (DataProxy.idxDipendente > 0)
{
// recupero IP
IPv4 = Request.UserHostName;
DataProxy.DP.taTimb.stp_insTimbMan(DataProxy.idxDipendente, dataOra, isEntrata, IPv4, "NoTim", approvata);
logger.lg.scriviLog(string.Format("Richiesta timbratura per il dipendente:{0} in data:{1} isEntrata:{2}", DataProxy.idxDipendente, dataOra, isEntrata), tipoLog.INFO);
}
else
{
logger.lg.scriviLog("IdxDipendente non trovato! inserimento timbratura mancante impossibile", tipoLog.INFO);
}
}
/// <summary>
/// salvo richiesta
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnRichMT_Click(object sender, EventArgs e)
{
logger.lg.scriviLog("Richiesta registrazione timbratura manuale", tipoLog.INFO);
// salva una richiesta di timbratura (ovvero approvata = FALSE!!!)
DateTime richiesta = DateTime.Now;
try
{
CultureInfo ita = new CultureInfo("it-IT");
richiesta = mod_dateTime.valoreDateTime;
bool isEntrata = Convert.ToBoolean(rblEntrata.SelectedValue);
registraTimbraturaNonApp(isEntrata, richiesta);
// aggiorno gridview
grView.DataBind();
}
catch
{
logger.lg.scriviLog("Errore conversione datetime!");
}
// sollevo evento
ev_reqUpdate?.Invoke(this, new EventArgs());
}
/// <summary>
/// inverte valore booleano
/// </summary>
/// <param name="isEnt"></param>
/// <returns></returns>
public bool invBool(object valore)
{
bool answ = true;
try
{
answ = !Convert.ToBoolean(valore);
}
catch
{ }
return answ;
}
/// <summary>
/// verifica se l'utente possa approvare la modifica oraria
/// </summary>
public bool userCanApprove
{
get
{
bool answ = false;
try
{
answ = DataProxy.DP.taDip2Ruoli.getByDipRuolo(DataProxy.idxDipendente, "AppMancTimb").Rows.Count > 0;
}
catch
{ }
return answ;
}
}
/// <summary>
/// calcola cognome-nome da idx
/// </summary>
/// <param name="idxDip"></param>
/// <returns></returns>
public string cognomeNome(object idxDip)
{
string answ = "";
int IdxDipendente = 0;
if (int.TryParse($"{idxDip}", out IdxDipendente))
{
answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente);
}
return answ;
}
/// <summary>
/// cambia tipo di visualizzaizone
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void chkShowAll_CheckedChanged(object sender, EventArgs e)
{
checkFixOds();
}
/// <summary>
/// effettua fix dell'ods
/// </summary>
private void checkFixOds()
{
if (chkShowAll.Checked)
{
ods.SelectMethod = "getNonAppr";
}
else
{
ods.SelectMethod = "getNonApprByDip";
}
grView.DataBind();
}
/// <summary>
/// wrapper x salvare approvazioni
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grView_SelectedIndexChanged(object sender, EventArgs e)
{
// salvo approvazione
DateTime dataOra = DateTime.Now;
int idxDip = 0;
try
{
dataOra = Convert.ToDateTime(grView.SelectedDataKey["dataOra"].ToString());
idxDip = Convert.ToInt32(grView.SelectedDataKey["idxDipendente"].ToString());
logger.lg.scriviLog(string.Format("Approvazione per dip {0} in data/ora {1}", idxDip, dataOra), tipoLog.INFO);
// recupero tab timbr non approvate x dip
DS_Applicazione.TimbratureRow rigaTimb = DataProxy.DP.taTimb.getByDipDataOra(idxDip, dataOra)[0];
// effettua arrotondamento (aggiunge/toglie)
int minOrig = dataOra.Minute;
int secOrig = dataOra.Second;
int minArr = 0;
int step = Convert.ToInt32(txtArrot.Text);
if (rigaTimb.entrata)
{
minArr = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(minOrig / step))) * step;
}
else
{
minArr = Convert.ToInt32(Math.Floor(Convert.ToDouble(minOrig / step))) * step;
}
// modifico data del record
DataProxy.DP.taTimb.stp_Timbr_modifica(idxDip, dataOra, dataOra.AddMinutes(minArr - minOrig).AddSeconds(-secOrig));
// approvo con data modificata
DataProxy.DP.taTimb.stp_Timbr_Approva(idxDip, dataOra.AddMinutes(minArr - minOrig).AddSeconds(-secOrig));
}
catch
{ }
// update!
grView.SelectedIndex = -1;
grView.DataBind();
// sollevo evento
ev_reqUpdate?.Invoke(this, new EventArgs());
}
/// <summary>
/// sistemo post eliminazione
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grView_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
chkShowAll.Checked = true;
checkFixOds();
// sollevo evento
ev_reqUpdate?.Invoke(this, new EventArgs());
}
protected void grView_RowDeleted(object sender, GridViewDeletedEventArgs e)
{
// sollevo evento
ev_reqUpdate?.Invoke(this, new EventArgs());
}
}
}