public PontoFuncionarioViewModel(DiaTrabalho ponto, SessaoLogin sessao, IPontoDiaRepository pontoRepository, IUnitOfWork unitOfWork)
        {
            this.ponto = ponto;

            this.Data            = ponto.Data.ToShortDateString();
            this.Funcionario     = ponto.Funcionario.Nome;
            this.Entrada         = ponto.Inicio;
            this.Saida           = ponto.Fim ?? new TimeSpan(0, 0, 0);
            this.pontoRepository = pontoRepository;
            this.unitOfWork      = unitOfWork;
            if (sessao.UsuarioLogado is Funcionario)
            {
                this.AllowEdit = false;
                this.Titulo    = "Ver ponto";
            }
            else
            {
                this.AllowEdit = true;
                this.Titulo    = "Editar/ver ponto";
            }

            Intervalos = ponto.Intervalos.ToList();

            SalvarCommand = new RelayCommand(confirmarSalvar, podeSalvar);
            FecharCommand = new RelayCommand(() => requestView(CLOSE));
        }
Пример #2
0
        public static PontoService criarPontoService(SessaoLogin sessao, IDataHoraStrategy dataHoraStrategy = null, IPontoDiaRepository pontoRepository = null, bool mock = false, IFeriadoRepository feriadoRepository = null)
        {
            if (dataHoraStrategy == null)
            {
                dataHoraStrategy = new DataHoraMockStrategy(DateTime.Today);
            }

            if (pontoRepository == null)
            {
                pontoRepository = new PontoDiaMockRepository();
            }

            var tipoIntervaloRepository = new TipoIntervaloMockRepository();

            tipoIntervaloRepository.save(new TipoIntervalo("Almoço"));

            if (mock)
            {
                return(new PontoServiceMock(criarPontoFactory(pontoRepository, feriadoRepository),
                                            dataHoraStrategy,
                                            new FuncionarioPossuiPontoAbertoSpecification(pontoRepository),
                                            new FuncionarioJaTrabalhouHojeSpecification(pontoRepository),
                                            sessao,
                                            pontoRepository,
                                            tipoIntervaloRepository));
            }

            return(new PontoService(criarPontoFactory(pontoRepository, feriadoRepository),
                                    dataHoraStrategy,
                                    new FuncionarioPossuiPontoAbertoSpecification(pontoRepository),
                                    new FuncionarioJaTrabalhouHojeSpecification(pontoRepository),
                                    sessao,
                                    pontoRepository,
                                    tipoIntervaloRepository));
        }
Пример #3
0
 public void setUp()
 {
     funcionario          = new FuncionarioFactory().criarFuncionario("Jhon Doe", "doe", "123456", "", "41617099864");
     sessaoLogin          = new SessaoLoginMock(funcionario);
     tipoIntervaloFactory = new TipoIntervaloFactory(new NomeIntervaloJaExisteSpecification(new TipoIntervaloMockRepository()));
     tipoAlmoco           = tipoIntervaloFactory.criarTipoIntervalo("ALMOÇO");
 }
        public static SelecaoDataWindow criarSelecaoDataWindow()
        {
            var uow = UnitOfWorkFactory.criarUnitOfWork();

            return(new SelecaoDataWindow(new SelecaoDataViewModel(
                                             RepositoryFactory.criarPontoRepository(uow),
                                             SessaoLogin.getSessao())));
        }
 public static PontoWindow criarPontoWindow(DiaTrabalho ponto, PontoService pontoService)
 {
     return(new PontoWindow(new ConsultarPontoViewModel(
                                (Funcionario)SessaoLogin.getSessao().UsuarioLogado,
                                ponto,
                                pontoService,
                                RepositoryFactory.criarTipoIntervaloRepository())));
 }
Пример #6
0
        public static ILoginService criarLoginService()
        {
            usuario.IUsuarioRepositorio repo = RepositoryFactory.criarUsuarioRepository();

            return(new LoginService(
                       repo,
                       new UsuarioFactory(new LoginJaExisteSpecification(repo), new LoginValidoSpecification(), new SenhaValidaSpecification()),
                       SessaoLogin.getSessao()));
        }
Пример #7
0
        public void testLoginCorreto()
        {
            SessaoLogin.getSessao().encerrar();
            Usuario u = loginService.Logar("joaozinho", "123456");

            SessaoLogin.getSessao().encerrar();

            Assert.AreEqual(u.Nome, "João");
        }
Пример #8
0
        private DiaTrabalho recuperarOuIniciarPonto(PontoService pontoService)
        {
            var ponto = pontoService.recuperarPontoAbertoFuncionario(SessaoLogin.getSessao().UsuarioLogado as Funcionario);

            if (ponto == null)
            {
                return(pontoService.iniciarDia());
            }
            return(ponto);
        }
Пример #9
0
 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;
 }
        public PainelControleViewModel()
        {
            Titulo        = string.Format("{0} - Painel de Controle", DateTime.Today.ToShortDateString());
            UsuarioLogado = SessaoLogin.getSessao().UsuarioLogado.Nome;

            RelatorioCommand = new RelayCommand(() => requestView(VIEW_RELATORIO));
            FolgaCommand     = new RelayCommand(() => requestView(VIEW_FOLGA));
            FeriadoCommand   = new RelayCommand(() => requestView(VIEW_FERIADO));
            JornadaCommand   = new RelayCommand(() => requestView(VIEW_JORNADA));
            PontoCommand     = new RelayCommand(() => requestView(VIEW_PONTO));
        }
Пример #11
0
        public SelecaoDataViewModel(IPontoDiaRepository pontoRepository, SessaoLogin sessaoLogin)
        {
            this.pontoRepository = pontoRepository;
            this.sessaoLogin     = sessaoLogin;

            var ontem = DateTime.Today.AddDays(-1);

            this.Data             = ontem;
            this.MaxData          = ontem;
            this.ConfirmarCommand = new RelayCommand(confirmarData);
        }
Пример #12
0
        public void SetupTest()
        {
            usuarioRepositorio = new UsuarioMockRepositorio();
            usuarioFactory     = new UsuarioFactory(new LoginJaExisteSpecification(usuarioRepositorio), new LoginValidoSpecification(), new SenhaValidaSpecification());
            LoginJaExisteSpecification loginJaExiste = new LoginJaExisteSpecification(usuarioRepositorio);

            usuarioFactory.LoginEmUsoSpecification = loginJaExiste;
            loginService = new LoginService(usuarioRepositorio, usuarioFactory, SessaoLogin.getSessao());

            usuarioRepositorio.save(usuarioFactory.criarUsuario("João", "joaozinho", "123456"));
            usuarioRepositorio.save(usuarioFactory.criarUsuario("Maria", "maria", "123456"));
        }
Пример #13
0
        public static PontoService criarPontoService(UnitOfWork unitOfWork = null)
        {
            var uow                     = unitOfWork ?? UnitOfWorkFactory.criarUnitOfWork();
            var pontoRepository         = RepositoryFactory.criarPontoRepository(uow);
            var tipoIntervaloRepository = RepositoryFactory.criarTipoIntervaloRepository();

            return(new PontoService(
                       criarPontoFactory(pontoRepository),
                       new DataHoraLocalStrategy(),
                       new FuncionarioPossuiPontoAbertoSpecification(pontoRepository),
                       new FuncionarioJaTrabalhouHojeSpecification(pontoRepository),
                       SessaoLogin.getSessao(),
                       pontoRepository,
                       tipoIntervaloRepository));
        }
Пример #14
0
        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));
        }
Пример #15
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
            tratarArgumentos(e.Args);

            bool loginAgain;

            do
            {
                loginAgain = false;
                var loginResult = UsuarioWindowFactory.criarLoginWindow().ShowDialog();
                if (loginResult.HasValue && loginResult.Value)
                {
                    loginAgain = true;
                    try
                    {
                        if (SessaoLogin.getSessao().UsuarioLogado is Funcionario)
                        {
                            var pontoService = PontoServiceFactory.criarPontoService();
                            var ponto        = recuperarOuIniciarPonto(pontoService);
                            PontoWindowFactory.criarPontoWindow(ponto, pontoService).ShowDialog();
                        }
                        else
                        {
                            PainelControleWindowFactory.criarPainelControleWindow().ShowDialog();
                        }
                    }
                    catch (PontoDiaJaExisteException ex)
                    {
                        MessageBox.Show(string.Format("O ponto do dia {0} já foi encerrado",
                                                      ex.DataPonto.ToShortDateString()),
                                        "Não é possível iniciar",
                                        MessageBoxButton.OK,
                                        MessageBoxImage.Information);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Não foi possível completar a operação", MessageBoxButton.OK, MessageBoxImage.Warning);
                    }
                }

                SessaoLogin.getSessao().encerrar();
            } while (loginAgain);

            Current.Shutdown();
        }
 public static PontoFuncionarioWindow criarPontoDoFuncionarioWindow(DiaTrabalho ponto, IUnitOfWork uow)
 {
     return(new PontoFuncionarioWindow(new PontoFuncionarioViewModel(ponto, SessaoLogin.getSessao(), RepositoryFactory.criarPontoRepository(uow), uow)));
 }
Пример #17
0
 public void testLoginSessaoNaoEncerrada()
 {
     SessaoLogin.getSessao().encerrar();
     loginService.Logar("joaozinho", "123456");
     loginService.Logar("maria", "123456");
 }
Пример #18
0
 public PontoServiceMock(PontoFactory pontoFactory, IDataHoraStrategy dataHoraStrategy, FuncionarioPossuiPontoAbertoSpecification pontoAbertoSpec, FuncionarioJaTrabalhouHojeSpecification funcTrabSpec, SessaoLogin sessaoLogin, IPontoDiaRepository pontoRepository, ITipoIntervaloRepository tipoIntervaloRepository) :
     base(pontoFactory, dataHoraStrategy, pontoAbertoSpec, funcTrabSpec, sessaoLogin, pontoRepository, tipoIntervaloRepository)
 {
 }