Пример #1
0
        public IResultado <Agenda> Alta(Agenda nuevaAgenda, IList <DiaAgenda> diasAgenda, IList <FechaExcepcion> excepciones)
        {
            Resultado <Agenda> resultado = new Resultado <Agenda>();

            try
            {
                if (!_dal.AgendaValida(nuevaAgenda))
                {
                    resultado.Correcto = false;
                    resultado.Mensajes.Add("Hay una superposición en los días de la agenda.");
                    return(resultado);
                }

                nuevaAgenda.Id = _domain.Crear(nuevaAgenda);

                foreach (DiaAgenda diaAgenda in diasAgenda)
                {
                    diaAgenda.Id = nuevaAgenda.Id;
                    decimal idDia = _dalDiaAgenda.Crear(diaAgenda); //Asocia la agenda creada con los días.
                }

                foreach (FechaExcepcion exc in excepciones)
                {
                    exc.IdAgenda = nuevaAgenda.Id;
                    decimal idExcepcion = _dalDiaAgenda.CrearExcepcion(exc);
                }

                resultado.Retorno = nuevaAgenda;
            }
            catch (SqlException ex)
            {
                resultado.Correcto = false;
                if (ex.Errors.Count > 0)
                {
                    // Violación de constraint UNIQUE
                    if (ex.Class == 14 && (ex.Number == 2627 || ex.Number == 50000))
                    {
                        resultado.Mensajes.Add("No se permite valores repetidos.");
                    }
                }
                resultado.Mensajes.Add(ex.Message);
            }
            catch (Exception ex)
            {
                resultado.Correcto = false;
                resultado.Mensajes.Add(ex.Message);
            }

            return(resultado);
        }