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)); }
public static PontoWindow criarPontoWindow(DiaTrabalho ponto, PontoService pontoService) { return(new PontoWindow(new ConsultarPontoViewModel( (Funcionario)SessaoLogin.getSessao().UsuarioLogado, ponto, pontoService, RepositoryFactory.criarTipoIntervaloRepository()))); }
/// <summary> /// Método responsável por efetuar a transposição da classe DiaTrabalho para seu respectivo Dto /// </summary> /// <param name="dia">dia atual com os periodos de trabalho cadastrados</param> /// <returns></returns> public static DiaTrabalhoDto DtoFactory(DiaTrabalho diaTrabalho) { List <PeriodoTrabalhoDto> periodos = diaTrabalho.periodosTrabalho.Select(o => PeriodoTrabalhoBo.DtoFactory(o.HoraInicial, o.HoraFinal)).ToList(); return(new DiaTrabalhoDto() { DiaSemana = diaTrabalho.DiaDaSemana, PeriodosTrabalho = periodos }); }
public void encerrarDia(DiaTrabalho ponto) { if (ponto.algumIntervaloEmAberto()) { throw new IntervaloEmAbertoException(ponto.getIntervaloEmAberto()); } ponto.Fim = dataHoraStrategy.getDataHoraAtual().TimeOfDay; pontoRepository.save(ponto); }
/// <summary> /// responsável por armazenar um período de trabalho à um dia de trabalho /// </summary> /// <param name="dia">dia da semana</param> /// <param name="inicioPeriodo">inicio de periodo de trabalho</param> /// <param name="fimPeriodo">fim do periodo de trabalho</param> public static void AdicionarPeriodoDeTrabalho( SemanaTrabalho semanaTrabalho, DayOfWeek dia, string inicioPeriodo, string fimPeriodo ) { if(semanaTrabalho.diasTrabalho == null) return; DiaTrabalho diaTrabalho = ( semanaTrabalho.diasTrabalho.FirstOrDefault( o => o.DiaDaSemana.Equals( dia ) ) ); if(diaTrabalho == null) diaTrabalho = AdicionarDiaDeTrabalho( semanaTrabalho, dia ); DiaTrabalhoBo.AdicionarPeriodoDeTrabalho( inicioPeriodo, fimPeriodo, diaTrabalho ); }
/// <summary> /// Método responsável por retornar o dia de trabalho atual baseado na dia da semana /// </summary> /// <param name="diaDaSemana">dia da semana (DayOfWeek)</param> /// <param name="semanaTrabalho">Semana atual de trabalho</param> /// <returns></returns> public static DiaTrabalhoDto ConsultarDiaAtualDeTrabalhoDto(DayOfWeek diaDaSemana, SemanaTrabalho semanaTrabalho) { DiaTrabalho diaAtual = SemanaTrabalhoDao.SelecionarDiaTrabalho(semanaTrabalho, diaDaSemana); if (diaAtual == null) { diaAtual = new DiaTrabalho(diaDaSemana); DiaTrabalhoBo.AdicionarPeriodoDeTrabalho("8:00", "18:00", diaAtual); } return(DiaTrabalhoBo.DtoFactory(diaAtual)); }
/// <summary> /// Método responsável por verificar se existe periodo de trabalho para o dia atual /// </summary> /// <param name="diaSemana">dia da semana (DataSelecionada.DayOfWeek)</param> /// <param name="diasTrabalho">lista de dias da semana</param> /// <returns></returns> public static bool DiaAtualPossuiPeriodoTrabalho( SemanaTrabalho semanaTrabalho, DayOfWeek diaSemana ) { //Caso seja nulo, não possua periodos ou não contenha o indice do dia da semana if(semanaTrabalho.diasTrabalho == null || semanaTrabalho.diasTrabalho.Count == 0) return false; DiaTrabalho dia = semanaTrabalho.diasTrabalho.FirstOrDefault( o => o.DiaDaSemana.Equals( diaSemana ) ); if(dia == null) return false; return dia.PeriodosDeTrabalho != null && dia.PeriodosDeTrabalho.Count > 0; }
public ConsultarPontoViewModel(Funcionario funcionario, DiaTrabalho ponto, PontoService pontoService, ITipoIntervaloRepository tipoRepository) { this.funcionario = funcionario; this.ponto = ponto; this.pontoService = pontoService; this.tipoIntervaloRepository = tipoRepository; EncerrarDiaCommand = new RelayCommand(confirmarEncerrarDia); ConsultarPontoCommand = new RelayCommand(abrirConsulta); EntrarIntervaloCommand = new RelayParameterEvaluatorCommand <TipoIntervalo>(registrarIntervalo, podeEntrarIntervalo); SairIntervaloCommand = new RelayParameterEvaluatorCommand <TipoIntervalo>(registrarIntervalo, podeSairIntervalo); }
/// <summary> /// Responsável por armazenar um dia de trabalho /// </summary> public static DiaTrabalho AdicionarDiaDeTrabalho( SemanaTrabalho semanaTrabalho, DayOfWeek dia ) { if(semanaTrabalho.diasTrabalho == null) return null; DiaTrabalho diaTrabalho = semanaTrabalho.diasTrabalho.FirstOrDefault( o => o.DiaDaSemana.Equals( dia ) ); if(diaTrabalho == null) { diaTrabalho = new DiaTrabalho( dia ); semanaTrabalho.diasTrabalho.Add( diaTrabalho ); } return diaTrabalho; }
private bool WriteInterval(ExcelWorksheet ws, DiaTrabalho dia, Cell cell) { try { var almoco = dia.getIntervalo(tipoAlmoco); cell.nextColumn(); WriteTimeCell(ws, cell, almoco.Entrada.ToString()); cell.nextColumn(); WriteTimeCell(ws, cell, almoco.Saida.ToString()); return(true); } catch (InvalidOperationException) { return(false); } }
/// <summary> /// Método para preencher uma inicialização do dia selecionado /// </summary> /// <param name="semanaTrabalho">semana de trabalho do colaborador</param> /// <param name="dataSelecionada">data de selecao</param> /// <returns></returns> private static InicializadorEstimativaDto PreencherInicializacaoDiaSelecionado(SemanaTrabalho semanaTrabalho, DateTime dataSelecionada) { InicializadorEstimativaDto inicializadorDto = new InicializadorEstimativaDto(); if (SemanaTrabalhoBo.DiaAtualPossuiPeriodoTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek)) { inicializadorDto.DataEstimativa = dataSelecionada; DiaTrabalho dia = SemanaTrabalhoDao.SelecionarDiaTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek); long ticks = dia.PeriodosDeTrabalho.Min(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraInicial)); inicializadorDto.HoraInicialEstimativa = new TimeSpan(ticks); } else { inicializadorDto = new InicializadorEstimativaDto() { DataEstimativa = dataSelecionada, HoraInicialEstimativa = new TimeSpan(8, 0, 0) } }; inicializadorDto.DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(dataSelecionada.DayOfWeek, semanaTrabalho); return(inicializadorDto); }
/// <summary> /// Método responsável por gerar uma semana de trabalho padrão /// de Segundo a Sexta com períodos de trabalho de 8:00 as 12:00 e 13:00 as 18:00 /// </summary> /// <returns>Semana de trabalho com dias de trabalho e periodos de trabalho predefinidos no método</returns> public static List<DiaTrabalho> GerarSemanaTrabalhoPadrao( SemanaTrabalho semanaTrabalho ) { semanaTrabalho.diasTrabalho.Clear(); DiaTrabalho diaAtual; foreach(DayOfWeek diaSemana in Enum.GetValues( typeof( DayOfWeek ) )) { switch(diaSemana) { case DayOfWeek.Sunday: case DayOfWeek.Saturday: break; default: diaAtual = new DiaTrabalho( (DayOfWeek)diaSemana ); DiaTrabalhoBo.AdicionarPeriodoDeTrabalho( "8:00", "12:00", diaAtual ); DiaTrabalhoBo.AdicionarPeriodoDeTrabalho( "13:00", "18:00", diaAtual ); semanaTrabalho.diasTrabalho.Add( diaAtual ); break; } } return semanaTrabalho.diasTrabalho; }
/// <summary> /// Método responsável por efetuar a seleção da hora de inicio da estimativa de uma tarefa para o colaborador /// </summary> /// <param name="contexto">sessão atual do banco</param> /// <param name="loginColaborador">login do colaborador atual</param> /// <returns>tarefaHistorico preenchida com</returns> public static InicializadorEstimativaDto SelecionarInicializadorEstimativaDto(string loginColaborador, DateTime dataSolicitacao, SemanaTrabalho semanaTrabalho) { WexDb contexto = ContextFactoryManager.CriarWexDb(); TarefaHistoricoTrabalho ultimoHistoricoTrabalho = TarefaHistoricoTrabalhoDao.ConsultarUltimoEsforcoRealizadoColaborador(contexto, loginColaborador, dataSolicitacao); InicializadorEstimativaDto inicializadorEstimativaDto = new InicializadorEstimativaDto(); DateTime dataSelecionada; if (!ValidarTarefaHistoricoTrabalho(ultimoHistoricoTrabalho)) { dataSelecionada = dataSolicitacao.Date; SelecionarDataDiaUtilInicial(semanaTrabalho, ref dataSelecionada); return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada)); } bool ultrapassouLimiteDia = ultimoHistoricoTrabalho.HoraFinal.Days > 0; dataSelecionada = new DateTime(ultimoHistoricoTrabalho.DtRealizado.Ticks); if (ultrapassouLimiteDia) { dataSelecionada = SelecionarDataProximoDiaUtil(semanaTrabalho, dataSelecionada); return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada)); } SelecionarDataDiaUtilInicial(semanaTrabalho, ref dataSelecionada); if (dataSelecionada.Equals(dataSolicitacao.Date)) { if (dataSelecionada.Equals(ultimoHistoricoTrabalho.DtRealizado)) { inicializadorEstimativaDto.DataEstimativa = dataSelecionada; inicializadorEstimativaDto.HoraInicialEstimativa = ultimoHistoricoTrabalho.HoraFinal; inicializadorEstimativaDto.DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(dataSelecionada.DayOfWeek, semanaTrabalho); return(inicializadorEstimativaDto); } return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada)); } else { if (SemanaTrabalhoBo.DiaAtualPossuiPeriodoTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek)) { DiaTrabalho dia = SemanaTrabalhoDao.SelecionarDiaTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek); long ticks = dia.PeriodosDeTrabalho.Max(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraFinal)); TimeSpan horaFinalExpediente = new TimeSpan(ticks); if (ultimoHistoricoTrabalho.HoraFinal >= horaFinalExpediente) { dataSelecionada = SelecionarDataProximoDiaUtil(semanaTrabalho, dataSelecionada); return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada)); } if (dataSelecionada.Equals(ultimoHistoricoTrabalho.DtRealizado)) { inicializadorEstimativaDto.DataEstimativa = dataSelecionada; inicializadorEstimativaDto.HoraInicialEstimativa = ultimoHistoricoTrabalho.HoraFinal; inicializadorEstimativaDto.DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(dataSelecionada.DayOfWeek, semanaTrabalho); return(inicializadorEstimativaDto); } return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada)); } else { inicializadorEstimativaDto.DataEstimativa = dataSolicitacao.Date; inicializadorEstimativaDto.HoraInicialEstimativa = new TimeSpan(8, 0, 0); inicializadorEstimativaDto.DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(dataSolicitacao.DayOfWeek, semanaTrabalho); } return(inicializadorEstimativaDto); } }
public void registrarIntervalo(TipoIntervalo tipoIntervalo, DiaTrabalho ponto) { ponto.registrarIntervalo(tipoIntervalo, dataHoraStrategy); pontoRepository.save(ponto); }
public EditarPontoEventArgs(DiaTrabalho ponto) : base(ControlarPontoViewModel.EDITAR_PONTO) { this.DiaTrabalho = ponto; }
public static PontoFuncionarioWindow criarPontoDoFuncionarioWindow(DiaTrabalho ponto, IUnitOfWork uow) { return(new PontoFuncionarioWindow(new PontoFuncionarioViewModel(ponto, SessaoLogin.getSessao(), RepositoryFactory.criarPontoRepository(uow), uow))); }
/// <summary> /// responsável por adicionar um período de trabalho ao dia de trabalho /// </summary> /// <param name="inicial">hora inicial do período de trabalho</param> /// <param name="final">hora final do período de trabalho</param> public static void AdicionarPeriodoDeTrabalho(string inicial, string final, DiaTrabalho diaTrabalho) { PeriodoTrabalho periodo = new PeriodoTrabalho(inicial, final); diaTrabalho.periodosTrabalho.Add(periodo); }
public void requestEditarDia(DiaTrabalho diaTrabalho) { requestView(new EditarPontoEventArgs(diaTrabalho)); exibir(); }