Exemplo n.º 1
0
        public override UsuarioViewModel Convert(MedicoDTO source, UsuarioViewModel destination, ResolutionContext context)
        {
            destination = base.Convert(source, destination, context);

            destination.CRM = source.CRM;

            destination.Especialidades = source.Especialidades
                                         .Select(_ => UsuarioViewModel.ControiMedicoEspecialidade(_.Id, _.EspecialidadeId, _.Ativo))
                                         .ToList();

            for (int i = 0; i < source.HorariosDeTrabalho.Count; i++)
            {
                var horarioDeTrabalho   = source.HorariosDeTrabalho[i];
                var indiceDoDiaDaSemana = destination.HorariosDeTrabalho.FindIndex(_ => _.DiaDaSemana.Item1 == horarioDeTrabalho.DiaDaSemana);

                if (indiceDoDiaDaSemana < 0)
                {
                    continue;
                }

                DateTime.TryParse(horarioDeTrabalho.Inicio, out DateTime inicio);
                DateTime.TryParse(horarioDeTrabalho.InicioIntervalo, out DateTime inicioIntervalo);
                DateTime.TryParse(horarioDeTrabalho.FimIntervalo, out DateTime fimIntervalo);
                DateTime.TryParse(horarioDeTrabalho.Fim, out DateTime fim);

                destination.HorariosDeTrabalho[indiceDoDiaDaSemana].Id              = horarioDeTrabalho.Id;
                destination.HorariosDeTrabalho[indiceDoDiaDaSemana].Inicio          = inicio;
                destination.HorariosDeTrabalho[indiceDoDiaDaSemana].InicioIntervalo = inicioIntervalo;
                destination.HorariosDeTrabalho[indiceDoDiaDaSemana].FimIntervalo    = fimIntervalo;
                destination.HorariosDeTrabalho[indiceDoDiaDaSemana].Fim             = fim;
                destination.HorariosDeTrabalho[indiceDoDiaDaSemana].Selecionado     = horarioDeTrabalho.Ativo;
            }

            return(destination);
        }
        public void SelecionaEspecialidade(Select2 select2)
        {
            if (!Guid.TryParse(select2.Id, out Guid especialidadeId))
            {
                return;
            }

            if (_usuarioViewModel.Especialidades.Any(_ => _.EspecialidadeId == especialidadeId))
            {
                var index = _usuarioViewModel.Especialidades.FindIndex(_ => _.EspecialidadeId == especialidadeId);

                if (_usuarioViewModel.Especialidades[index].Id == Guid.Empty)
                {
                    _usuarioViewModel.Especialidades.RemoveAt(index);
                }
                else
                {
                    _usuarioViewModel.Especialidades[index].Ativo = !_usuarioViewModel.Especialidades[index].Ativo;
                }
            }
            else
            {
                _usuarioViewModel.Especialidades.Add(UsuarioViewModel.ControiMedicoEspecialidade(Guid.Empty, especialidadeId, true));
            }
        }