using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using UMinho.GestaoProjectos.DataAccess;
using Telerik.Web.UI;
using System.Data.Metadata.Edm;
using System.Text;
using UMinho.GestaoProjectos.Config;
using System.IO.Compression;
using System.IO;
using UMinho.GestaoProjectos.Exceptions;
using UMinho.Framework.Web.UI;
using UMinho.Framework.DataAccess;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

using System.Collections;
using System.Diagnostics;
using System.Data.Common;

using UMinho.GestaoProjectos.Base;
using UMinho.GestaoProjectos.BLL;
using System.Web.UI.HtmlControls;

namespace UMinho.GestaoProjectos.Views
{
    public partial class ViewEmissaoTimeSheetEdit  : UMinho.Framework.Web.UI.BaseView //: BaseEditControlo//
    {


//        #region ViewState Variables

//        public Utils.FormMode FormMode
//        {
//            get { return ViewState["___formmode"] == null ? Utils.FormMode.CreateMode : (Utils.FormMode)ViewState["___formmode"]; }

//            set { ViewState["___formmode"] = value; }
//        }

//        public ListagemTimesheet OldEntity
//        {
//            get { return ViewState["___entitypk"] == null ? new ListagemTimesheet() : (ListagemTimesheet)ViewState["___entitypk"]; }

//            set { ViewState["___entitypk"] = value; }
//        }
//        #endregion

//        protected void Page_Load(object sender, EventArgs e)
//        {
//            if (!Page.IsPostBack)
//            {
//                ListagemTimesheet listagem = new ListagemTimesheet();


//                if (!string.IsNullOrEmpty(Page.Request.Params["idrecursohumano"])) //
//                {
//                    listagem.IDRecursoHumano = int.Parse(Page.Request.Params["idrecursohumano"]); // atributo que filtra
//                    OldEntity = listagem;


//                }
//                if (!string.IsNullOrEmpty(Page.Request.Params["id"]) && int.Parse(Page.Request.Params["id"]) > 0) // atributo filtrado
//                {
//                    listagem.ID = int.Parse(Page.Request.Params["id"]);
//                    OldEntity = listagem;
//                }

//              // BindTimesheet(ID); //aqui tinha BindTipoTarefas

//                if (OldEntity.ID > 0)
//                {
//                    FormatPresentation(Utils.FormMode.EditMode);
//                    BindData();
//                }
//                else
//                {
//                    FormatPresentation(Utils.FormMode.CreateMode);
//                }
//            }
//            SetTitles();

//            VerificaAcesso();
//        }

//        protected void Page_PreRender(object sender, System.EventArgs e)
//        {
//            StringBuilder sbe = new StringBuilder();
//            sbe.Append("<script language='JavaScript'>\n<!--\n");
//            sbe.Append(sb_out.ToString());
//            sbe.Append("// -->\n</script>\n");

//            if (!Page.ClientScript.IsStartupScriptRegistered("Startup"))
//                Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", sbe.ToString());
//        }
//        private void SetTitles()
//        {
//            if (OldEntity.ID > 0)
//            {
//                lblTitulo.Text = "Editar versão de timesheet";
//            }
//            else
//            {
//                lblTitulo.Text = "Adicionar versão de timesheet";
//            }

//         /*   if (plhTitulo.Controls.Count == 0) ////Header não tenho
//            {
//                Control ctrl = Page.LoadControl(BLLFuncionalidades.GetView(Configurations.AppID, "ViewEmissaoTimeSheet").ViewControl);
//                ViewEmissaoTimeSheet vet = (ViewEmissaoTimeSheet)ctrl;
//                plhTitulo.Controls.Add(vet);
//            } */

//        }

//        private void VerificaAcesso()
//        {
//            int _rh = 0;
//            ListagemTimesheet elemento = null;


//            if (FormMode == Utils.FormMode.CreateMode)
//            {
//                _rh = OldEntity.IDRecursoHumano;
//            }

//            if (FormMode == Utils.FormMode.EditMode)
//            {
//                elemento = new BLLListagemTimesheets().GetEntity2(OldEntity.ID);
//                _rh = elemento.IDRecursoHumano;
//            }


//          /*  if (new BLLProjectos().PertenceEquipaProjecto(_projecto, this.CurrentPage.CurrentUserLogin.ToLower()))
//            {
//                if (elemento != null)
//                {
//                    if (elemento.RecursoHumano.Login.ToLower() != this.CurrentPage.CurrentUserLogin.ToLower())
//                    {
//                        BasePortalPage page = this.CurrentPage;
//                        sb_out.Append(Utils.PublishAlertMessage("Não tem acesso à edição da tarefa"));
//                        pnlData.Visible = false;
//                        plhTitulo.Visible = false;
//                    }
//                }
//            } */

//        }

//        //Bind Control To Validate

//        private void BindData() //
//        {

//            ListagemTimesheet elemento = new BLLListagemTimesheets().GetEntity2(OldEntity.ID);

//            rdpInvestigadorE.Text = elemento.IDRecursoHumano.ToString();
//            rcbEstado.SelectedValue = elemento.IDEstadoTimesheet.ToString();
//            txtAssinaturaTimesheet.Text = elemento.AssinaturaTimesheet;
//            Obervaçoestxt.Text = elemento.Observações;
//            DataEnvio1.SelectedDate = elemento.DataEnvio;
//            RadAsyncUpload1.TargetFolder = elemento.FileContent.ToString(); //Temporary folder


//        }

//        protected void lkbReturn_Click(object sender, EventArgs e)
//        {
//            Page.ClientScript.RegisterStartupScript(Page.GetType(), "closethisform", "CloseAndRebind();", true);
//        }

//        protected void lkbSave_Click(object sender, EventArgs e)
//        {
//            Save();
//        }

//        private void Save() //
//        {
//            ListagemTimesheet listagem = new ListagemTimesheet();
//            BasePortalPage page = this.CurrentPage;
//            RadAjaxManager RadMg = RadAjaxManager.GetCurrent(Page);
//            if (Page.IsValid)
//            {
//                try
//                {
//                    if (OldEntity.ID == 0)
//                    {
//                        //CollectValues(listagem);
//                        //listagem.ID = OldEntity.ID;
//                        listagem.IDRecursoHumano = new BLLRecursoHumano().GetEntityByLogin(this.CurrentPage.CurrentUserLogin.ToLower()).ID;
//                        new BLLListagemTimesheets().SaveEntity(listagem, this.CurrentPage.CurrentUserLogin.ToLower()); //BLLTarefas Save Entities

//                    }
//                    else
//                    {
//                        listagem = new BLLListagemTimesheets().GetEntity2(OldEntity.ID);
//                        CollectValues(listagem);
//                        new BLLListagemTimesheets().UpdateEntity(listagem, this.CurrentPage.CurrentUserLogin.ToLower());
//                    }

//                    Page.ClientScript.RegisterStartupScript(Page.GetType(), "closethisform", "CloseAndRebind();", true);
//                }
//                catch (ProjectosException ex)
//                {
//                    //sb_out.Append(Utils.PublishAlertMessage(ex.Message));
//                    return;
//                }
//                catch (Exception ex)
//                {
//                    try
//                    {
//                        BLLLogger.LogError(ex, this.CurrentPage.CurrentUserLogin.ToLower());

//                        string mailSuporte = Config.ConfigurationsGP.ContactoSuporte;
//                        //sb_out.Append(Utils.PublishAlertMessage("Aconteceu um erro na gravação da informação. Tente de novo por favor<br/><br/> Caso se repita o erro contacte: "
//                        //    + mailSuporte));
//                        return;
//                    }

//                    catch (Exception)
//                    {
//                        throw;
//                    }

//                }
//            }
//        }
         
//        //Alterações

//        private void CollectValues(ListagemTimesheet listagem)
//        {
//            // Projectos proj = new BLLProjectos().GetEntity(OldEntity.IDProjecto);



//            listagem.IDRecursoHumano = int.Parse(rdpInvestigadorE.Text);
//            listagem.IDEstadoTimesheet = int.Parse(rcbEstado.SelectedValue);
//            listagem.AssinaturaTimesheet = txtAssinaturaTimesheet.Text;
//            listagem.DataEnvio = DataEnvio1.SelectedDate.Value;
//            listagem.Observações = Observações.Text;
//            //listagem.FileContent = RadAsyncUpload1.TemporaryFolder.ToString(); 
//        }


//      /*  protected void lkbRemove_Click(object sender, EventArgs e)
//        {
//            Remove();
//        }

//        private void Remove()
//        {
//            ListagemTimesheets listagem = new ListagemTimesheets();
//            BasePortalPage page = this.CurrentPage;
//            try
//            {
//                if (OldEntity.ID != 0)
//                {
//                    tarefa.ID = OldEntity.ID;
//                    new BLLTarefas().RemoveEntity(tarefa, this.CurrentPage.CurrentUserLogin.ToLower());

//                }

//                Page.ClientScript.RegisterStartupScript(Page.GetType(), "closethisform", "CloseAndRebind();", true);
//            }
//            catch (ProjectosException ex)
//            {
//                sb_out.Append(Utils.PublishAlertMessage( ex.Message));
//                return;

//            }
//            catch (Exception ex)
//            {
//                try
//                {
//                    BLLLogger.LogError(ex, this.CurrentPage.CurrentUserLogin.ToLower());

//                    string mailSuporte = Config.ConfigurationsGP.ContactoSuporte;
//                    sb_out.Append(Utils.PublishAlertMessage("Aconteceu um erro na remoção. Tente de novo por favor<br/><br/> Caso se repita o erro contacte: " + mailSuporte)); 
//                    return;
//                }

//                catch (Exception)
//                {
//                    throw;
//                }

//            }
//        } */

//        private void FormatPresentation(Utils.FormMode status)
//        {
//            switch (status)
//            {
//                case Utils.FormMode.EditMode:

//                    lkbRemove.Visible = true;
//                    //radStrip.Visible = false;
//                    FormMode = Utils.FormMode.EditMode;
//                    break;

//                case Utils.FormMode.BrowseMode:
//                    FormMode = Utils.FormMode.BrowseMode;
//                    break;

//                case Utils.FormMode.CreateMode:
//                    lkbRemove.Visible = false;

//                    FormMode = Utils.FormMode.CreateMode;
//                    break;

//                case Utils.FormMode.SavedMode:
//                    FormMode = Utils.FormMode.SavedMode;
//                    break;
//                default:
//                    break;
//            }
//        }

  
//    }
//} 
        



        //protected void Page_Load(object sender, EventArgs e)
        //{

        //}

        //protected override void OnInit(EventArgs e)
        //{
        //    base.OnInit(e);
        //    try
        //    {
        //        btSave.ServerClick += btSave_ServerClick;
        //        btRemover.ServerClick += btRemover_ServerClick;
        //        btFechar.ServerClick += btFechar_ServerClick;
        //    }
        //    catch (Exception ex)
        //    {
        //        UMinho.Framework.Common.AppLog.LogError(ex, CurrentUser);
        //        //DisplayErrorMessage("Aconteceu um erro");
        //    }
        //}

        //protected void Page_Init(object sender, EventArgs e)
        //{

        //}

        //public override void DataBind()
        //{
        //    base.DataBind();

        //    Utils.OldEntity reserva = OldEntity; //ID = OBJETO
        //    OldEntity = reserva;

        //    ////GridDataItem parentItem = (e.Item as GridEditFormItem).ParentItem;
        //    ////RadTextBox rdpI = (RadTextBox)MyUserControl.FindControl("rdpInvestigadorE");
        //    //////rdpI.Text = parentItem["IDRecursoHumano"].Text;
        //    ////RadComboBox rcbE = (RadComboBox)MyUserControl.FindControl("rdbEstado");
        //    ////RadTextBox AssT = (RadTextBox)MyUserControl.FindControl("txtAssinaturaTimesheet");
        //    ////RadTextBox Obs = (RadTextBox)MyUserControl.FindControl("Obervaçoestxt");
        //    ////RadDatePicker DE = (RadDatePicker)MyUserControl.FindControl("DataEnvio");
        //    ////RadAsyncUpload RUp = (RadAsyncUpload)MyUserControl.FindControl("RadAsyncUpload1");
        //    //newValues["IDRecursoHumano"] = (userControl.FindControl("rdpInvestigador") as RadTextBox).Text;
        //    //newValues["IDEstadoTimesheet"] = (userControl.FindControl("rdbEstado") as RadComboBox).Text;
        //    //newValues["AssinaturaTimesheet"] = (userControl.FindControl("txtAssinaturaTimesheet") as RadTextBox).Text;
        //    //newValues["Observações"] = (userControl.FindControl("Obervaçoestxt") as RadTextBox).Text;
        //    //newValues["DataEnvio"] = (userControl.FindControl("DataEnvio") as RadDatePicker).SelectedDate.ToString();
        //    //newValues["FileContent"] = (userControl.FindControl("RadAsyncUpload1") as RadAsyncUpload).TargetFolder.ToString();

        //    rdpInvestigadorE.Text = reserva.IDRecursoHumano + " ( " + reserva.Nome + " )";
        //    rcbEstado.Text = reserva.IDEstadoTimesheet.ToString;
        //    txtAssinaturaTimesheet.Text = reserva.AssinaturaTimesheet.ToString;
        //    DataEnvio1.SelectedDate = reserva.DataEnvio.ToString("HH:mm");
        //    Obervaçoestxt.Text = reserva.Observações.ToString;
        //    RadAsyncUpload1.TargetFolder = reserva.FileContent.ToString();

        //    btRemover.Visible = false;


        //}
        //private void btFechar_ServerClick(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        Objecto = null;
        //        OnCancel();
        //    }
        //    catch (Exception ex)
        //    {
        //        UMinho.Framework.Common.AppLog.LogError(ex, CurrentUser);
        //        DisplayErrorMessage("Aconteceu um erro na remoção");
        //    }
        //}

        //private void btRemover_ServerClick(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        ReservaEspaco reserva = new ReservaEspaco() { IDReserva = Objecto.IDReserva };
        //        reserva.UserAlteracaoReserva = CurrentUser;
        //        reserva.DataAlteracaoReserva = DateTime.Now;
        //        bool anulaTodas = false;
        //        //if (dataReservaMultipla.SelectedValue == "S")
        //        if (dataReservaMultiplaRBL.SelectedValue == "N")
        //        {
        //            anulaTodas = true;
        //        }

        //        BLLReserva.DesmarcaReserva(reserva, anulaTodas, this.CurrentUser);
        //        Objecto = null;
        //        if (anulaTodas)
        //        {
        //            DisplayInfoMessage("Foram anuladas as reservas e as subsquentes.");

        //        }
        //        else
        //        {
        //            DisplayInfoMessage("Reserva anulada.");
        //        }
        //        OnDelete();
        //    }
        //    catch (Exception ex)
        //    {
        //        UMinho.Framework.Common.AppLog.LogError(ex, CurrentUser);
        //        DisplayErrorMessage("Aconteceu um erro na remoção");
        //    }
        //}

        //private void btSave_ServerClick(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        ReservaEspaco reserva = new ReservaEspaco() { IDReserva = Objecto.IDReserva };
        //        reserva.UserAlteracaoReserva = CurrentUser;
        //        reserva.DataAlteracaoReserva = DateTime.Now;
        //        bool anulaTodas = false;
        //        //if (dataReservaMultipla.SelectedValue == "S")
        //        if (dataReservaMultiplaRBL.SelectedValue == "N")
        //        {
        //            anulaTodas = true;
        //        }

        //        BLLReserva.DesmarcaReserva(reserva, anulaTodas, this.CurrentUser);
        //        Objecto = null;
        //        if (anulaTodas)
        //        {
        //            DisplayInfoMessage("Foram anuladas as reservas e as subsquentes.");

        //        }
        //        else
        //        {
        //            DisplayInfoMessage("Reserva anulada.");
        //        }
        //        OnDelete();
        //    }
        //    catch (Exception ex)
        //    {
        //        UMinho.Framework.Common.AppLog.LogError(ex, CurrentUser);
        //        DisplayErrorMessage("Aconteceu um erro na remoção");
        //    }
        //}


//        #region ImpPagina

//        public partial class ViewEmissaoTimeSheetEdit : UMinho.Framework.Web.UI.BaseView
//    {
//        StringBuilder sb_out = new StringBuilder();


// #region ViewState Variables

//        public Utils.FormMode FormMode
//        {
//            get { return ViewState["___formmode"] == null ? Utils.FormMode.CreateMode : (Utils.FormMode)ViewState["___formmode"]; }

//            set { ViewState["___formmode"] = value; }
//        }

//        public ListagemTimesheet OldEntity
//        {
//            get { return ViewState["___entitypk"] == null ? new ListagemTimesheet() : (ListagemTimesheet)ViewState["___entitypk"]; }

//            set { ViewState["___entitypk"] = value; }
//        }
// #endregion

//        protected void Page_Load(object sender, EventArgs e)
//        {
//            if (!Page.IsPostBack)
//            {
//                ListagemTimesheet listagem = new ListagemTimesheet();


//                if (!string.IsNullOrEmpty(Page.Request.Params["idrecursohumano"])) //
//                {
//                    listagem.IDRecursoHumano = int.Parse(Page.Request.Params["idrecursohumano"]); // atributo que filtra
//                    OldEntity = listagem;


//                }
//                if (!string.IsNullOrEmpty(Page.Request.Params["id"]) && int.Parse(Page.Request.Params["id"]) > 0) // atributo filtrado
//                {
//                    listagem.ID = int.Parse(Page.Request.Params["id"]);
//                    OldEntity = listagem;
//                }

//              // BindTimesheet(ID); //aqui tinha BindTipoTarefas

//                if (OldEntity.ID > 0)
//                {
//                    FormatPresentation(Utils.FormMode.EditMode);
//                    BindData();
//                }
//                else
//                {
//                    FormatPresentation(Utils.FormMode.CreateMode);
//                }
//            }
//            SetTitles();

//            VerificaAcesso();
//        }

//        protected void Page_PreRender(object sender, System.EventArgs e)
//        {
//            StringBuilder sbe = new StringBuilder();
//            sbe.Append("<script language='JavaScript'>\n<!--\n");
//            sbe.Append(sb_out.ToString());
//            sbe.Append("// -->\n</script>\n");

//            if (!Page.ClientScript.IsStartupScriptRegistered("Startup"))
//                Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", sbe.ToString());
//        }
//        private void SetTitles()
//        {
//            if (OldEntity.ID > 0)
//            {
//                lblTitulo.Text = "Editar versão de timesheet";
//            }
//            else
//            {
//                lblTitulo.Text = "Adicionar versão de timesheet";
//            }

//         /*   if (plhTitulo.Controls.Count == 0) ////Header não tenho
//            {
//                Control ctrl = Page.LoadControl(BLLFuncionalidades.GetView(Configurations.AppID, "ViewEmissaoTimeSheet").ViewControl);
//                ViewEmissaoTimeSheet vet = (ViewEmissaoTimeSheet)ctrl;
//                plhTitulo.Controls.Add(vet);
//            } */

//        }

//        private void VerificaAcesso()
//        {
//            int _rh = 0;
//            ListagemTimesheet elemento = null;


//            if (FormMode == Utils.FormMode.CreateMode)
//            {
//                _rh = OldEntity.IDRecursoHumano;
//            }

//            if (FormMode == Utils.FormMode.EditMode)
//            {
//                elemento = new BLLListagemTimesheets().GetEntity2(OldEntity.ID);
//                _rh = elemento.IDRecursoHumano;
//            }


//          /*  if (new BLLProjectos().PertenceEquipaProjecto(_projecto, this.CurrentPage.CurrentUserLogin.ToLower()))
//            {
//                if (elemento != null)
//                {
//                    if (elemento.RecursoHumano.Login.ToLower() != this.CurrentPage.CurrentUserLogin.ToLower())
//                    {
//                        BasePortalPage page = this.CurrentPage;
//                        sb_out.Append(Utils.PublishAlertMessage("Não tem acesso à edição da tarefa"));
//                        pnlData.Visible = false;
//                        plhTitulo.Visible = false;
//                    }
//                }
//            } */

//        }

//        //Bind Control To Validate

//        private void BindData() //
//        {

//            ListagemTimesheet elemento = new BLLListagemTimesheets().GetEntity2(OldEntity.ID);

//            rdpInvestigadorE.Text = elemento.IDRecursoHumano.ToString();
//            rcbEstado.SelectedValue = elemento.IDEstadoTimesheet.ToString();
//            txtAssinaturaTimesheet.Text = elemento.AssinaturaTimesheet;
//            Obervaçoestxt.Text = elemento.Observações;
//            DataEnvio.SelectedDate = elemento.DataEnvio;
//            RadAsyncUpload1.TargetFolder = elemento.FileContent.ToString(); //Temporary folder


//        }

//   /*      private void BindTipoTarefas(RadComboBox ddl)
//        {
//            ddl.DataValueField = "ID";
//            ddl.DataTextField = "WorkPackageComboText";
//            ddl.DataSource = new BLLTipoTarefa().GetListTipoTarefaProjecto(OldEntity.ID);
//            ddl.DataBind();
//            ddl.ClearSelection();
//            ddl.Text = "";
//        }  */


//        protected void lkbReturn_Click(object sender, EventArgs e)
//        {
//            Page.ClientScript.RegisterStartupScript(Page.GetType(), "closethisform", "CloseAndRebind();", true);
//        }

//        protected void lkbSave_Click(object sender, EventArgs e)
//        {
//            Save();
//        }

//        private void Save() //
//        {
//            ListagemTimesheet listagem = new ListagemTimesheet();
//            BasePortalPage page = this.CurrentPage;
//            RadAjaxManager RadMg = RadAjaxManager.GetCurrent(Page);
//            if (Page.IsValid)
//            {
//                try
//                {
//                    if (OldEntity.ID == 0)
//                    {
//                        //CollectValues(listagem);
//                        //listagem.ID = OldEntity.ID;
//                        listagem.IDRecursoHumano = new BLLRecursoHumano().GetEntityByLogin(this.CurrentPage.CurrentUserLogin.ToLower()).ID;
//                        new BLLListagemTimesheets().SaveEntity(listagem, this.CurrentPage.CurrentUserLogin.ToLower()); //BLLTarefas Save Entities

//                    }
//                    else
//                    {
//                        listagem = new BLLListagemTimesheets().GetEntity2(OldEntity.ID);
//                        CollectValues(listagem);
//                        new BLLListagemTimesheets().UpdateEntity(listagem, this.CurrentPage.CurrentUserLogin.ToLower());
//                    }

//                    Page.ClientScript.RegisterStartupScript(Page.GetType(), "closethisform", "CloseAndRebind();", true);
//                }
//                catch (ProjectosException ex)
//                {
//                    sb_out.Append(Utils.PublishAlertMessage(ex.Message));
//                    return;
//                }
//                catch (Exception ex)
//                {
//                    try
//                    {
//                        BLLLogger.LogError(ex, this.CurrentPage.CurrentUserLogin.ToLower());

//                        string mailSuporte = Config.ConfigurationsGP.ContactoSuporte;
//                        sb_out.Append(Utils.PublishAlertMessage("Aconteceu um erro na gravação da informação. Tente de novo por favor<br/><br/> Caso se repita o erro contacte: "
//                            + mailSuporte));
//                        return;
//                    }

//                    catch (Exception)
//                    {
//                        throw;
//                    }

//                }
//            }
//        }
         
//        //Alterações

//        private void CollectValues(ListagemTimesheet listagem)
//        {
//            // Projectos proj = new BLLProjectos().GetEntity(OldEntity.IDProjecto);



//            listagem.IDRecursoHumano = int.Parse(rdpInvestigadorE.Text);
//            listagem.IDEstadoTimesheet = int.Parse(rcbEstado.SelectedValue);
//            listagem.AssinaturaTimesheet = txtAssinaturaTimesheet.Text;
//            listagem.DataEnvio = DataEnvio.SelectedDate.Value;
//            listagem.Observações = Observações.Text;
//            //listagem.FileContent = System.Text.Encoding.Unicode.GetBytes(RadAsyncUpload1); // Convert.ToBase64String(byteHash) (byte)cmbStart.SelectedIndex System.Text.Encoding.Unicode.GetBytes(text);
//        }


//      /*  protected void lkbRemove_Click(object sender, EventArgs e)
//        {
//            Remove();
//        }

//        private void Remove()
//        {
//            ListagemTimesheets listagem = new ListagemTimesheets();
//            BasePortalPage page = this.CurrentPage;
//            try
//            {
//                if (OldEntity.ID != 0)
//                {
//                    tarefa.ID = OldEntity.ID;
//                    new BLLTarefas().RemoveEntity(tarefa, this.CurrentPage.CurrentUserLogin.ToLower());

//                }

//                Page.ClientScript.RegisterStartupScript(Page.GetType(), "closethisform", "CloseAndRebind();", true);
//            }
//            catch (ProjectosException ex)
//            {
//                sb_out.Append(Utils.PublishAlertMessage( ex.Message));
//                return;

//            }
//            catch (Exception ex)
//            {
//                try
//                {
//                    BLLLogger.LogError(ex, this.CurrentPage.CurrentUserLogin.ToLower());

//                    string mailSuporte = Config.ConfigurationsGP.ContactoSuporte;
//                    sb_out.Append(Utils.PublishAlertMessage("Aconteceu um erro na remoção. Tente de novo por favor<br/><br/> Caso se repita o erro contacte: " + mailSuporte)); 
//                    return;
//                }

//                catch (Exception)
//                {
//                    throw;
//                }

//            }
//        } */

//        private void FormatPresentation(Utils.FormMode status)
//        {
//            switch (status)
//            {
//                case Utils.FormMode.EditMode:

//                    lkbRemove.Visible = true;
//                    //radStrip.Visible = false;
//                    FormMode = Utils.FormMode.EditMode;
//                    break;

//                case Utils.FormMode.BrowseMode:
//                    FormMode = Utils.FormMode.BrowseMode;
//                    break;

//                case Utils.FormMode.CreateMode:
//                    lkbRemove.Visible = false;

//                    FormMode = Utils.FormMode.CreateMode;
//                    break;

//                case Utils.FormMode.SavedMode:
//                    FormMode = Utils.FormMode.SavedMode;
//                    break;
//                default:
//                    break;
//            }
//        }

  
//    }
//} 
//#endregion


        BLLPesquisarTimesheet pesquisarbll = new BLLPesquisarTimesheet();
        BLLListagemTimesheets listagembll = new BLLListagemTimesheets();
        byte[] fileBytes = null;
        string Ficheiro = string.Empty;
        string FileTipo = string.Empty;

        //protected void Page_Init(object sender, EventArgs e)
        //{
        //}

        #region EditFormType
        //Auxiliar ao usercontrol

        private object _dataItem = null;

        public object DataItem
        {
            get
            {
                return this._dataItem;

            }
            set
            {
                this._dataItem = value;
            }
        }

        public object GridEditableItem
        {
            get
            {
                return this.GridEditableItem;
            }
            set
            {
                this.GridEditableItem = value;
            }
        }
        #endregion


        // 
        protected void Page_Load(object sender, GridCommandEventArgs e)
        {
            ViewEmissaoTimeSheetEdit userControl = (ViewEmissaoTimeSheetEdit)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);

            ListagemTimesheet timesheet = new ListagemTimesheet
            {
                IDRecursoHumano = int.Parse((userControl.FindControl("rdpInvestigador") as RadTextBox).Text),
                IDEstadoTimesheet = int.Parse((userControl.FindControl("rcbEstado") as RadComboBox).Text),
                AssinaturaTimesheet = (userControl.FindControl("txtAssinaturaTimesheet") as RadTextBox).Text,
                Observações = (userControl.FindControl("Obervaçoestxt") as RadTextBox).Text,
                DataEnvio = (userControl.FindControl("DataEnvio") as RadDatePicker).SelectedDate.Value,
                FileContent = Encoding.ASCII.GetBytes((userControl.FindControl("RadAsyncUpload1") as RadAsyncUpload).TargetFolder.ToString()),
            };


            if (!IsPostBack)
            {

                //    rcbEstado.DataSource = pesquisarbll.GetAllEstados();
                //    rcbEstado.DataValueField = "IDEstadoTimesheet";
                //    rcbEstado.DataTextField = "TipoEstadoTimesheet";
                //    rcbEstado.DataBind();

            }

            //passar os dados
            if (Request.QueryString["ID"] != null)
            {
                int id = Convert.ToInt32(Request.QueryString["ID"]);
                FileID.Text = Request.QueryString["ID"];
                ListagemTimesheet lt = listagembll.GetFileByID(id); // id: local variable 
                if (lt != null)
                {
                    rdpInvestigadorE.Text = Convert.ToString(lt.IDRecursoHumano);
                    rcbEstado.SelectedValue = Convert.ToString(lt.IDEstadoTimesheet);
                    Obervaçoestxt.Text = lt.Observações;
                    txtAssinaturaTimesheet.Text = lt.AssinaturaTimesheet;
                    DataEnvio.SelectedDate = lt.DataEnvio;
                    RadAsyncUpload1.TargetFolder = Convert.ToString(lt.FileContent);
                }
            }
        }

        //FILEID --> Save via EntityFramework model
        public void SaveFile(object sender, EventArgs e)
        {
            ListagemTimesheet model = new ListagemTimesheet();
            model.IDRecursoHumano = Convert.ToInt32(rdpInvestigadorE.Text);
            model.IDEstadoTimesheet = Convert.ToInt32(rcbEstado.SelectedValue);
            model.Observações = Obervaçoestxt.Text;
            model.AssinaturaTimesheet = txtAssinaturaTimesheet.Text;
            model.DataEnvio = DataEnvio.SelectedDate.Value;

            if (!string.IsNullOrEmpty(Ficheiro) && FileTipo != null)
            {
                model.Ficheiro = Path.GetFileNameWithoutExtension(Ficheiro);
                model.FileContent = fileBytes;
                model.FileTipo = Path.GetExtension(FileTipo);
            }
            if (!string.IsNullOrEmpty(FileID.Text) && Convert.ToInt32(FileID.Text) > 0)
            {
                model.ID = Convert.ToInt32(FileID.Text);
                listagembll.UpdateFile(model);
            }
            else
            {
                listagembll.SaveFile(model);
            }

            Page.ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true); // fechar o form
        }


        public void CancelEdit(object sender, EventArgs e) // Funciona (x)
        {
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);
        }


        //doc. radfileuploader
        public void RadAsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
        {
            RadAsyncUpload1.Visible = true; //false
            var liItem = new HtmlGenericControl("li");
            Ficheiro = e.File.FileName; // sintaxe metodo
            FileTipo = e.File.ContentType;
            e.IsValid = true;
            e.File.InputStream.Position = 0;
            fileBytes = new byte[e.File.InputStream.Length];
            for (int totalBytesCopied = 0; totalBytesCopied < e.File.InputStream.Length; )
                totalBytesCopied += e.File.InputStream.Read(fileBytes, totalBytesCopied, Convert.ToInt32(e.File.InputStream.Length) - totalBytesCopied); //conversao para bytes
        }

        public void estadoT_DataBinding(object sender, System.EventArgs e)
        {
            rcbEstado.DataSource = pesquisarbll.GetAllEstados();
            rcbEstado.DataValueField = "IDEstadoTimesheet";
            rcbEstado.DataTextField = "TipoEstadoTimesheet";
            rcbEstado.DataBind();
        }

 
    }
}
