220 lines
7.7 KiB
C#
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());
|
|
}
|
|
}
|
|
} |