private void SalvarPontoUsuario(DirectEventArgs e)
        {
            try
            {
                PontoUsuarioVO pontoU = new PontoUsuarioVO();
                if (base.AcaoTela == Common.AcaoTela.Edicao)
                    pontoU = PontoSelecionado;

                pontoU.Data = txtData.SelectedDate;
                pontoU.HoraInicio = pontoU.Data.AddHours(txtHoraInicial.SelectedTime.Hours).AddMinutes(txtHoraInicial.SelectedTime.Minutes);
                pontoU.HoraTermino = pontoU.Data.AddHours(txtHoraFinal.SelectedTime.Hours).AddMinutes(txtHoraFinal.SelectedTime.Minutes);
                pontoU.Usuario = new UsuarioVO() { Id = cboUsuario.Value.ToInt32() };

                if (pontoU.HoraInicio > pontoU.HoraTermino)
                {
                    base.MostrarMensagem("Erro", "horário inicial não pode ser superior ao final.", String.Empty);
                    return;
                }

                pontoU.Usuario.PontosUsuario = new PontoUsuarioBO().BuscarPontosDoDia(pontoU.Data, pontoU.Usuario);
                PontoUsuarioVO pontoAux = pontoU.Usuario.PontosUsuario.FirstOrDefault(x => pontoU.Id != x.Id && ((pontoU.HoraInicio >= x.HoraInicio && pontoU.HoraInicio <= x.HoraTermino) || (pontoU.HoraTermino >= x.HoraInicio && pontoU.HoraTermino <= x.HoraTermino) || (pontoU.HoraInicio <= x.HoraInicio && pontoU.HoraTermino >= x.HoraTermino)));
                if (pontoAux != null)
                {
                    base.MostrarMensagem("Erro", String.Format("Ponto de usuário conflitante Data => {0}. <br/>Horário inicial => {1}. <br/>Horário de término => {2}", pontoAux.Data.ToString("dd/MM/yyyy"), pontoAux.HoraInicio.ToString("HH:mm"), pontoAux.HoraTermino.Value.ToString("HH:mm")), String.Empty);
                    return;
                }

                DateTime dataMatu = pontoU.Data.AddHours(12);
                DateTime dataVesp = pontoU.Data.AddHours(18);
                PeriodoVO p = new PeriodoVO(){ Id = pontoU.HoraInicio <= dataMatu ? 1 : pontoU.HoraInicio <= dataVesp ? 2 : 3 };
                pontoU.Periodo = p;
                pontoU.Removido = false;
                pontoU.Justificativa = txtJustificativa.Text;

                new PontoUsuarioBO(pontoU).Salvar();

                base.MostrarMensagem("Sucesso", "Ponto de usuário gravado com sucesso.", String.Empty);

                LoadPagina();
                winPontosUsuario.Hide();
            }
            catch (Exception ex)
            {
                base.MostrarMensagem("Erro", "Erro ao salvar ponto de usuário.", String.Empty);
            }
        }
Пример #2
0
        public void RegistrarPonto(Boolean entrada)
        {
            PontoUsuarioVO pontoU = null;
            DateTime dataNow = DateTime.Now;
            if (UsuarioLogado.PontosUsuario.Count == 0 || UsuarioLogado.PontosUsuario[UsuarioLogado.PontosUsuario.Count - 1].HoraTermino.HasValue)
            {
                pontoU = new PontoUsuarioVO();
                pontoU.HoraInicio = dataNow.AddSeconds(-dataNow.Second);
                pontoU.HoraTermino = null;
            }
            else
            {
                pontoU = UsuarioLogado.PontosUsuario[UsuarioLogado.PontosUsuario.Count - 1];
                pontoU.HoraTermino = dataNow.AddSeconds(-dataNow.Second);
                if (pontoU.HoraTermino.Value.Date < pontoU.HoraInicio.Date)
                {
                    this.MostrarMensagem("Erro", "Não é possível dar saída, pois a data de saída é superior a de entrada. Entre em contato com algum administrador.", String.Empty);
                    return;
                }
            }

            DateTime dataMatu = DateTime.Today.AddHours(12);
            DateTime dataVesp = DateTime.Today.AddHours(18);
            PeriodoVO p = new PeriodoVO() { Id = pontoU.HoraInicio <= dataMatu ? 1 : pontoU.HoraInicio <= dataVesp ? 2 : 3 };
            pontoU.Periodo = p;
            pontoU.Data = DateTime.Today;
            pontoU.Usuario = UsuarioLogado;
            pontoU.Removido = false;

            new PontoUsuarioBO(pontoU).Salvar();
            UsuarioLogado.PontosUsuario = new PontoUsuarioBO().BuscarPontosDoDia(UsuarioLogado);
            CarregarInformacoesPonto();
            this.MostrarMensagem("Sucesso", "Ponto registrado com sucesso.", this.Page.Request.RawUrl);
        }
 private void PreencherCampos(DirectEventArgs e)
 {
     PontoSelecionado = new PontoUsuarioBO().SelectById(e.ExtraParams["id"].ToInt32());
     txtData.Text = PontoSelecionado.Data.ToString("dd/MM/yyyy");
     txtHoraInicial.Text = PontoSelecionado.HoraInicio.ToString("HH:mm");
     if (PontoSelecionado.HoraTermino.HasValue)
         txtHoraFinal.Text = PontoSelecionado.HoraTermino.Value.ToString("HH:mm");
     else
         txtHoraFinal.Clear();
     CarregarUsuarios(PontoSelecionado.Usuario);
     cboUsuario.SetValue(PontoSelecionado.Usuario.Id);
     txtJustificativa.Text = PontoSelecionado.Justificativa;
 }