public void encerrarDia(DiaTrabalho ponto)
        {
            if (ponto.algumIntervaloEmAberto())
            {
                throw new IntervaloEmAbertoException(ponto.getIntervaloEmAberto());
            }

            ponto.Fim = dataHoraStrategy.getDataHoraAtual().TimeOfDay;
            pontoRepository.save(ponto);
        }
 public PontoService(PontoFactory pontoFactory, IDataHoraStrategy dataHoraStrategy, FuncionarioPossuiPontoAbertoSpecification pontoAbertoSpec, FuncionarioJaTrabalhouHojeSpecification funcTrabSpec, SessaoLogin sessaoLogin, IPontoDiaRepository pontoRepository, ITipoIntervaloRepository tipoIntervaloRepository)
 {
     this.pontoFactory            = pontoFactory;
     this.dataHoraStrategy        = dataHoraStrategy;
     this.deixouPontoAberto       = pontoAbertoSpec;
     this.jaTrabalhouHoje         = funcTrabSpec;
     this.jaTrabalhouHoje.Data    = dataHoraStrategy.getDataHoraAtual();
     this.sessaoLogin             = sessaoLogin;
     this.pontoRepository         = pontoRepository;
     this.tipoIntervaloRepository = tipoIntervaloRepository;
 }
示例#3
0
        public virtual void registrarIntervalo(TipoIntervalo tipoIntervalo, IDataHoraStrategy dataHoraStrategy)
        {
            if (intervaloFoiRegistrado(tipoIntervalo))
            {
                var intervalo = getIntervalo(tipoIntervalo);
                if (intervalo.Saida.HasValue)
                {
                    throw new IntervaloJaRegistradoException(tipoIntervalo);
                }

                intervalo.Saida = dataHoraStrategy.getDataHoraAtual().TimeOfDay;
            }
            else
            {
                if (algumIntervaloEmAberto())
                {
                    throw new IntervaloEmAbertoException(getIntervaloEmAberto());
                }

                Intervalos.Add(new Intervalo(tipoIntervalo, dataHoraStrategy.getDataHoraAtual().TimeOfDay));
            }
        }
        public DiaTrabalho criarDiaTrabalho(IDataHoraStrategy dataHoraStrategy, SessaoLogin sessaoLogin)
        {
            DateTime dt = dataHoraStrategy.getDataHoraAtual();

            if (repository.existePontoDia(sessaoLogin.UsuarioLogado as Funcionario, dt))
            {
                throw new PontoDiaJaExisteException(dt);
            }

            if (feriadoService.isFeriado(dt))
            {
                return(new DiaTrabalhoFeriado(feriadoService.getFeriado(dt), dt.TimeOfDay, sessaoLogin.UsuarioLogado as Funcionario));
            }

            return(new DiaTrabalhoComum(dt.Date, dt.TimeOfDay, sessaoLogin.UsuarioLogado as Funcionario));
        }