Ejemplo n.º 1
0
        public TOTransaction <List <TOEcCotiz> > GetEcCotiz(string ter_coda, string usu_codi, int fec_fini, int fec_fina)
        {
            try
            {
                if (string.IsNullOrEmpty(emp_codi))
                {
                    throw new Exception("Código de empresa no definido en api");
                }
                TOSoSbene beneficiario = new TOSoSbene();
                beneficiario = daoBene.GetSoSbene(int.Parse(emp_codi), ter_coda);
                if (beneficiario == null)
                {
                    throw new Exception(string.Format("No se encontró beneficiario asociado al usuario {0}", usu_codi));
                }
                List <TOEcCotiz> cotizaciones = new List <TOEcCotiz>();
                cotizaciones = daoCotiz.GetSeCcotiz(int.Parse(emp_codi), ter_coda, beneficiario.sbe_cont, fec_fini, fec_fina);
                if (cotizaciones == null || cotizaciones.Count == 0)
                {
                    throw new Exception("No se encontraron cotizaciones");
                }

                foreach (TOEcCotiz cotizacion in cotizaciones)
                {
                    cotizacion.detalle = daoDespa.GetEcDespa(int.Parse(emp_codi), cotizacion.cot_cont);
                    if (cotizacion.detalle != null && cotizacion.detalle.Count > 0)
                    {
                        foreach (TOEcDespa detalle in cotizacion.detalle)
                        {
                            TOAeClase clase = new TOAeClase();
                            clase         = daoClase.GetAeClase(int.Parse(emp_codi), detalle.cla_codi);
                            detalle.clase = clase;
                            var productos = daoPhij.GetEcDphij(int.Parse(emp_codi), cotizacion.cot_cont, detalle.des_cont);
                            detalle.productos = productos;
                        }
                        ;
                        cotizacion.anticipos   = daoDetan.GetEcDetan(int.Parse(emp_codi), cotizacion.cot_cont);
                        cotizacion.liquidacion = daoLiq.GetLiqCons(int.Parse(emp_codi), cotizacion.cot_cont);
                        cotizacion.invitados   = daoLisev.GetEcLisev(int.Parse(emp_codi), cotizacion.eve_cont);
                    }
                }
                ;

                return(new TOTransaction <List <TOEcCotiz> >()
                {
                    ObjTransaction = cotizaciones, TxtError = "", Retorno = 0
                });
            }
            catch (Exception ex)
            {
                return(new TOTransaction <List <TOEcCotiz> >()
                {
                    ObjTransaction = null, Retorno = 1, TxtError = ex.Message
                });
            }
        }
Ejemplo n.º 2
0
        public TOTransaction CrearReserva(TOAeReser reserva)
        {
            try
            {
                /*revisamos si hay plazo disponible para poder generar la reserva con el campo CLA_TICA de la clase*/
                TOAeClase clase = daoClase.GetAeClaseByClaCont(reserva.Emp_codi, reserva.Cla_cont);
                if (clase != null && clase.Cla_Fchr != null && reserva.Res_fini.Date > clase.Cla_Fchr.Value.Date)
                {
                    throw new Exception("FECHA LÍMITE RESERVA: " + clase.Cla_Fchr.Value.ToString("yyyy-MM-dd"));
                }
                var ite_cont = ConfigurationManager.AppSettings["MedioReserva"].ToString();
                if (ite_cont != null)
                {
                    reserva.Ite_cont = int.Parse(ite_cont);
                }

                //consultar si el tercero ya tiene reserva a esa misma hora
                if (reserva.Esp_mdit == "S")
                {
                    int cantidadReserva = daoAgenda.GetReservaTercero(reserva.Emp_codi, (int)reserva.Ter_codi, reserva.Productos[0].Pro_cont, reserva.Res_fini, reserva.Res_fina);
                    if (cantidadReserva != 0)
                    {
                        throw new Exception("El tercero tiene una reserva activa para esta hora");
                    }
                }
                int CantEspacios = daoAgenda.CantidadHorarios(reserva.Emp_codi, reserva.Cla_cont, reserva.Res_fini.Year, reserva.Res_fini.Month, reserva.Res_fini.Day,
                                                              (float)reserva.Ter_codi, reserva.Productos[0].Pro_cont, reserva.Esp_mdit, "");
                List <TOOcupado> intervalosNoDisponiblesOcupados = daoAgenda.GetOcupadosDipo(reserva.Emp_codi, reserva.Cla_cont, reserva.Res_fini.Year, reserva.Res_fini.Month, reserva.Res_fini.Day,
                                                                                             reserva.Esp_mdit, -1, reserva.Productos[0].Pro_cont, "", (float)reserva.Ter_codi);

                DTOEntities.TSalida salida = boAgenda.ValidarDisponibilidadHorario(reserva.Res_fini, reserva.Res_fina, reserva.Cla_cont, (float)reserva.Ter_codi,
                                                                                   reserva.Productos[0].Pro_cont, reserva.Esp_mdit, "", CantEspacios, intervalosNoDisponiblesOcupados);
                if (salida.retorno == 0)
                {
                    throw new Exception(salida.Txterror);
                }

                if (reserva.Esp_cont == 0)
                {
                    int esp_cont = 0;
                    if (reserva.Esp_mdit == "S")
                    {
                        //revisamos los espacios que tiene disponible el tercero y verificamos cuales tienen disponibilidad (disponiblilidad de rango)
                        //no incluye las reservas
                        //daoAgenda.GetEspSinReservaTercero(reserva.Emp_codi, reserva.Res_fini.Year, reserva.Res_fini.Month, reserva.Res_fini.Day, reserva.Cla_cont, reserva.Productos[0].Pro_cont, out esp_cont, reserva.Res_fini, reserva.Res_fina, reserva.Esp_mdit, reserva.Ter_codi);
                        //esp_cont = daoAgenda.GetEspSinReservaTercero(reserva.Emp_codi, reserva.Res_fini.Year, reserva.Res_fini.Month, reserva.Res_fini.Day, reserva.Cla_cont, reserva.Productos[0].Pro_cont, reserva.Res_fini, reserva.Res_fina, (int)reserva.Ter_codi);
                    }
                    else
                    {
                        esp_cont = daoAgenda.GetEspSinReserva(reserva.Emp_codi, reserva.Res_fini.Year, reserva.Res_fini.Month, reserva.Res_fini.Day, reserva.Cla_cont, reserva.Productos[0].Pro_cont, reserva.Res_fini, reserva.Res_fina);
                        if (esp_cont == 0)
                        {
                            throw new Exception("Este horario ya no se encuentra disponible");
                        }
                    }
                    reserva.Esp_cont = esp_cont;
                }

                return(comReserva.CrearReserva(reserva));
            }
            catch (Exception ex)
            {
                return(new TOTransaction()
                {
                    InvoiceId = 0, Retorno = 1, TxtError = ex.Message
                });
            }
        }