using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using GPW_data; using SteamWare; namespace GPW_Admin { public enum tipoSpostamento { /// /// nessuno spsotamento consentito /// none, /// /// spostamento fase ancestor tra progetti /// chgProj, /// /// spostamento sottofase in altra fase ancestor /// chgAncest, /// /// sposta i record assegnati ad una fase (micro o macro) ad un altra fase (micro o macro) /// moveRA } public partial class spostaFasi : BasePage { #region Private Methods private void fasiFrom_eh_faseSel(object sender, EventArgs e) { fixBtnFunc(); } private void fasiFrom_eh_resetSelezione(object sender, EventArgs e) { fixBtnFunc(); } private void fasiTo_eh_faseSel(object sender, EventArgs e) { fixBtnFunc(); } private void fasiTo_eh_resetSelezione(object sender, EventArgs e) { fixBtnFunc(); } private void Mod_pageSize_eh_nuovaSize(object sender, EventArgs e) { fasiFrom.doUpdate(); fasiTo.doUpdate(); } #endregion Private Methods #region Protected Methods /// /// clona la macrofase (e le sottofasi) dal primo progetot al secondo /// /// /// protected void btnClona_Click(object sender, EventArgs e) { switch (moveEnabled(fasiFrom.idxFase, fasiTo.idxFase)) { case tipoSpostamento.none: // non faccio nulla break; case tipoSpostamento.chgProj: // sposto fase ANCESTOR selezionata nel progetto di destinazione if (fasiTo.idxProgetto > 0 && fasiFrom.idxFase > 0) { DataProxy.DP.taAF.clonaFaseAnc(fasiTo.idxProgetto, fasiFrom.idxFase); } break; case tipoSpostamento.chgAncest: // sposto sottofase in una differente fase ancestor if (fasiTo.idxProgetto > 0 && fasiFrom.idxFase > 0) { DataProxy.DP.taAF.clonaFase(fasiTo.idxFase, fasiFrom.idxFase); } break; case tipoSpostamento.moveRA: break; default: // non faccio nulla break; } fasiFrom.resetSelezione(); fasiTo.resetSelezione(); } /// /// effettua spostamento fasi seconda dei casi... /// /// /// protected void btnSposta_Click(object sender, EventArgs e) { switch (moveEnabled(fasiFrom.idxFase, fasiTo.idxFase)) { case tipoSpostamento.none: // non faccio nulla break; case tipoSpostamento.chgProj: // sposto fase ANCESTOR selezionata nel progetto di destinazione if (fasiTo.idxProgetto > 0 && fasiFrom.idxFase > 0) { DataProxy.DP.taAF.updateProgetto(fasiTo.idxProgetto, fasiFrom.idxFase); } break; case tipoSpostamento.chgAncest: // sposto sottofase in una differente fase ancestor if (fasiTo.idxProgetto > 0 && fasiFrom.idxFase > 0) { DataProxy.DP.taAF.updateFaseAncest(fasiTo.idxFase, fasiFrom.idxFase); } break; case tipoSpostamento.moveRA: break; default: // non faccio nulla break; } fasiFrom.resetSelezione(); fasiTo.resetSelezione(); } /// /// sistema abilitazione del button spostamenti /// protected void fixBtnFunc() { /* ************************************************** * controllo selezione fasi: * - se seleziona 1 fase "top" a sx e nessuna a dx ok * - se seleziona 1 fase "child" a sx ed 1 fase ""top" a dx ok * **************************************************/ bool enableBtnSposta = false; bool enableBtnClona = false; string testoBtn = traduci("noAction"); string testoBtnClona = traduci("noAction"); string cssBtn = "btn btn-lg btn-secondary btn-block"; string cssBtnClona = "btn btn-lg btn-secondary btn-block"; switch (moveEnabled(fasiFrom.idxFase, fasiTo.idxFase)) { case tipoSpostamento.chgProj: enableBtnSposta = true; enableBtnClona = true; testoBtn = traduci("chgProj"); testoBtnClona = traduci("clonaFase"); cssBtn = "btn btn-lg btn-primary btn-block"; cssBtnClona = "btn btn-lg btn-success btn-block"; break; case tipoSpostamento.chgAncest: enableBtnSposta = true; enableBtnClona = true; testoBtn = traduci("chgAncest"); testoBtnClona = traduci("clonaSottoFase"); cssBtn = "btn btn-lg btn-secondary btn-block"; cssBtnClona = "btn btn-lg btn-success btn-block"; break; case tipoSpostamento.moveRA: //enableBtnSposta = true; //testoBtn = traduci("moveRA"); //cssBtn = "btnBlu ui-corner-all shadowBox btnEditBig"; break; default: break; } // fix sposta btnSposta.Enabled = enableBtnSposta; btnSposta.Text = testoBtn; btnSposta.CssClass = cssBtn; // fix clona btnClona.Enabled = enableBtnClona; btnClona.Text = testoBtnClona; btnClona.CssClass = cssBtnClona; } /// /// fornisce il tipo di spostamento concesso secondo valori selezionati /// /// /// /// protected tipoSpostamento moveEnabled(int idxFaseFrom, int idxFaseTo) { tipoSpostamento answ = tipoSpostamento.none; bool faseSxTop = false; bool faseDxTop = false; // se non ho nulla selezioanto a sx non faccio nulla... if (idxFaseFrom > 0) { // carico info su tipo fase sx/dx... try { faseSxTop = (DataProxy.DP.taAF.getByIdx(idxFaseFrom)[0].idxFaseAncest == 0); } catch { } if (fasiTo.idxFase > 0) { try { faseDxTop = (DataProxy.DP.taAF.getByIdx(idxFaseTo)[0].idxFaseAncest == 0); } catch { } } if (faseSxTop && fasiTo.idxFase == 0) { answ = tipoSpostamento.chgProj; } else if (!faseSxTop && faseDxTop) { answ = tipoSpostamento.chgAncest; } else if (fasiTo.idxFase > 0) { answ = tipoSpostamento.moveRA; } } return answ; } /// /// caricamento pagina /// /// /// protected void Page_Load(object sender, EventArgs e) { fasiFrom.eh_faseSel += new EventHandler(fasiFrom_eh_faseSel); fasiFrom.eh_doReset += new EventHandler(fasiFrom_eh_resetSelezione); fasiTo.eh_faseSel += new EventHandler(fasiTo_eh_faseSel); fasiTo.eh_doReset += new EventHandler(fasiTo_eh_resetSelezione); fixBtnFunc(); mod_pageSize.eh_nuovaSize += Mod_pageSize_eh_nuovaSize; } #endregion Protected Methods } }