Beispiel #1
0
        public ActionResult CreatePost(int?idSolicitud)
        {
            if (idSolicitud == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            //Solicitud solicitud = db.Solicituds.Find(idSolicitud);
            Solicitud solicitud = _service.BuscarSolVenta(idSolicitud);

            if (solicitud == null)
            {
                return(HttpNotFound());
            }

            Orden orden = new Orden
            {
                Orden_Solicitud = solicitud,
                SolicitudID     = solicitud.SolicitudID
            };

            if (ModelState.IsValid)
            {
                //******
                //LLAMADA PATRONES-INI
                //------------------------------------------------------------------------------------------------------------------------------------------
                //--CREACIÓN DEL OBJETO COMPLEJO "SOLICITUD" PASO 1--
                //Patrón Builder: CREA un documento con sus respectivas páginas de datos vacías, las cuales se completan a medida que se avanza con el desarrollo del documento en cuestión
                //------------------------------------------------------------------------------------------------------------------------------------------

                //The 'Builder' abstract class. La clase abstracta para asignar la clase concreta que quiero crear. En este caso: SOLICITUD
                DocumentoBuilder ordenBuilder;

                //The 'Director' class. Es la clase que usa el objeto complejo concreto para ejecutar el método "construir" que tiene los pasos de creación de cada parte de un documento
                DirectorDocumento directorSolicitud = new DirectorDocumento();

                // Construyo el documento complejo que necesite vacío
                ordenBuilder = new OrdenBuilder();
                directorSolicitud.Construir(ordenBuilder);

                //Cargo el list de paginas del documento en cración. VIEWMODEL a renderizar en la vista
                //ConstructorDocumento.Documento.partes

                orden.Orden_Paginas = ordenBuilder.Documento.paginas.Values.ToList();
                Documento doc = new Documento();

                doc = ordenBuilder.Documento;
                //LLAMADA PATRONES-FIN
                //******

                //db.Ordens.Add(orden);
                //db.SaveChanges();
                _service.CreateOrdVenta(orden);
                return(RedirectToAction("Index"));
            }

            ViewBag.SolicitudID = new SelectList(db.Solicituds.Where(r => r.SolicitudID == solicitud.SolicitudID), "SolicitudID", "SolicitudOwnerID", orden.SolicitudID);
            return(View(orden));
        }
        // GET: DatosSolicitudPaginas/Create
        public ActionResult Create()
        {
            //Es el objeto complejo que estoy creando que me sirve de auxiliar para ir creando la VENTA paso a paso
            DocumentoBuilder solicitudBuilder;

            //Es la clase que usando el objeto complejo concreto, ejecuta el método con los pasos creación
            DirectorDocumento directorSolicitud = new DirectorDocumento();

            // Construyo el documento complejo que necesite (SOLICITUD con sus paginas u ORDEN con sus paginas) vacío
            solicitudBuilder = new SolicitudBuilder();
            directorSolicitud.Construir(solicitudBuilder);

            //Cargo el VIEWMODEL a renderizar en la vista
            //ConstructorDocumento.Documento.partes
            return(View(solicitudBuilder.Documento.paginas));
            //return View();
        }
        public ActionResult Create([Bind(Include = "DatosSolicitudID,DatosSolicitudNombre,PaginaID,PaginaNombre")] DatosSolicitudPagina datosSolicitud)
        {
            if (ModelState.IsValid)
            {
                //******************************************************************************************************************************************
                //ESTOS 2 PATRONES ME PERMITEN CREAR OBJETOS COMPLEJOS PARA LABURARLOS EN TIEMPO DE EJECUCION Y PEGAR SOBRE LA BD
                //patron template o strategy para crear una VENTA
                //******************************************************************************************************************************************

                //------------------------------------------------------------------------------------------------------------------------------------------
                //--CREACIÓN DEL OBJETO COMPLEJO "SOLICITUD" PASO 1--
                //Patrón Builder: CREA la PARTE1 del objeto complejo y este objeto queda disponible para crear sus siguientes partes
                //------------------------------------------------------------------------------------------------------------------------------------------

                //Es el objeto complejo que estoy creando que me sirve de auxiliar para ir creando la VENTA paso a paso
                DocumentoBuilder solicitudBuilder;

                //Es la clase que usando el objeto complejo concreto, ejecuta el método con los pasos creación
                DirectorDocumento directorSolicitud = new DirectorDocumento();

                // Construyo el documento complejo que necesite (SOLICITUD con sus paginas u ORDEN con sus paginas) vacío
                solicitudBuilder = new SolicitudBuilder(datosSolicitud);
                directorSolicitud.Construir(solicitudBuilder);

                //Cargo el VIEWMODEL a renderizar en la vista
                //ConstructorDocumento.Documento.partes

                //solicitudBuilder.Documento.paginas

                //creo una SOLICITUD nueva
                //Solicitud nuevaSolicitud = new Solicitud();



                //Creo una VENTA nueva
                //Venta nuevaVenta = new Venta();
                //nuevaVenta.VentaID = documentoBuilder.IdDocumento;
                //nuevaVenta.VentaTitulo = "Venta para documento numero: " + solicitudBuilder.IdDocumento;



                //creo una ORDEN nueva (NO DESARROLLADO)
                //Orden nuevaOrden = new Orden();

                //cargo la solicitud nueva
                //PATRONES...
                // Recorre el Dictionary para cada par de valores dentro del objeto complejo creado
                //foreach (KeyValuePair<string, Pagina> parte_par in documentoBuilder.Documento.partes)
                //{

                //    if (parte_par.Key == "cabecera")
                //    {
                //        //paginas de cabecera
                //        foreach (Pagina paginaCabecera in parte_par.Value.Paginas)
                //        {
                //            //Cargo la pagina datos solicitud del objeto complejo SolicitudBuilder
                //            Type type = paginaCabecera.GetType();

                //            //En cada caso debería desarrollar la funcionalidad de negocio (PATRON TEMPLATE METOD?)
                //            if (type.Equals(typeof(DatosSolicitudPagina)))
                //            {
                //                nuevaSolicitud.SolicitudPaginas.Add(new DatosSolicitudPagina { PaginaID = paginaCabecera.PaginaID, PaginaNombre = paginaCabecera.PaginaNombre, DatosSolicitudTitulo = "Pagina Datos Solicitud" });
                //            }

                //            if (type.Equals(typeof(CuentaBancariaDepositoPagina)))
                //            {
                //                nuevaSolicitud.SolicitudPaginas.Add(new CuentaBancariaDepositoPagina { PaginaID = paginaCabecera.PaginaID, PaginaNombre = paginaCabecera.PaginaNombre });
                //            }

                //            if (type.Equals(typeof(PagosRealizadosPagina)))
                //            {
                //                nuevaSolicitud.SolicitudPaginas.Add(new PagosRealizadosPagina { PaginaID = paginaCabecera.PaginaID, PaginaNombre = paginaCabecera.PaginaNombre });
                //            }

                //            if (type.Equals(typeof(DatosUnidadPagina)))
                //            {
                //                nuevaSolicitud.SolicitudPaginas.Add(new DatosUnidadPagina { PaginaID = paginaCabecera.PaginaID, PaginaNombre = paginaCabecera.PaginaNombre });
                //            }

                //        }
                //    }
                //    else if (parte_par.Key == "detalle")
                //    {
                //        //paginas de detalle
                //        foreach (Pagina paginaDetalle in parte_par.Value.Paginas)
                //        {
                //            //Cargo la pagina datos solicitud del objeto complejo SolicitudBuilder
                //            Type type = paginaDetalle.GetType();

                //            //En cada caso debería desarrollar la funcionalidad de negocio (PATRON TEMPLATE METOD?)
                //            if (type.Equals(typeof(HojaProspectoPagina)))
                //            {
                //                nuevaSolicitud.SolicitudPaginas.Add(new HojaProspectoPagina { PaginaID = paginaDetalle.PaginaID, PaginaNombre = paginaDetalle.PaginaNombre });
                //            }

                //            if (type.Equals(typeof(PropuestaComercialPagina)))
                //            {
                //                nuevaSolicitud.SolicitudPaginas.Add(new PropuestaComercialPagina { PaginaID = paginaDetalle.PaginaID, PaginaNombre = paginaDetalle.PaginaNombre });
                //            }

                //            if (type.Equals(typeof(LegajoPersonaPagina)))
                //            {
                //                nuevaSolicitud.SolicitudPaginas.Add(new LegajoPersonaPagina { PaginaID = paginaDetalle.PaginaID, PaginaNombre = paginaDetalle.PaginaNombre });
                //            }
                //        }
                //    }

                //}


                //Asigno la Orden a la venta: ID
                //nuevaVenta.OrdenID = documentoBuilder.IdDocumento;
                //nuevaVenta.VentaOrden = nuevaOrden;
                //ALTA DE VENTA EN DB
                //db.Ventas.Add(nuevaVenta);
                //db.SaveChanges();
                //******************************************************************************************************************************************

                db.DatosSolicitudPaginas.Add(datosSolicitud);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(datosSolicitud));
        }
Beispiel #4
0
        public ActionResult Create([Bind(Include = "DatosSolicitudID,DatosSolicitudNombre")] DatosSolicitud datosSolicitud)
        {
            if (ModelState.IsValid)
            {
                //******************************************************************************************************************************************
                //ESTOS 2 PATRONES ME PERMITEN CREAR OBJETOS COMPLEJOS PARA LABURARLOS EN TIEMPO DE EJECUCION Y PEGAR SOBRE LA BD
                //patron template o strategy para crear una VENTA
                //******************************************************************************************************************************************

                //------------------------------------------------------------------------------------------------------------------------------------------
                //--CREACIÓN DEL OBJETO COMPLEJO "SOLICITUD" PASO 1--
                //Patrón Builder: CREA la PARTE1 del objeto complejo y este objeto queda disponible para crear sus siguientes partes
                //------------------------------------------------------------------------------------------------------------------------------------------

                //Es el objeto complejo que estoy creando que me sirve de auxiliar para ir creando la VENTA paso a paso
                DocumentoBuilder documentoBuilder;

                //Es la clase que usando el objeto complejo concreto, ejecuta el método con los pasos creación
                DirectorDocumento directorDocumento = new DirectorDocumento();

                // Construyo el documento complejo que necesite (SOLICITUD con sus paginas u ORDEN con sus paginas) vacío
                documentoBuilder = new SolicitudBuilder(datosSolicitud);
                directorDocumento.Construir(documentoBuilder);

                //Objeto que devuelve el patron (PRODUCTO): Un documento puede ser una SOLICITUD o una ORDEN
                //documentoBuilder.Documento;

                //------------------------------------------------------------------------------------------------------------------------------------------
                //--VENTA CONCRETADA--
                //Patrón Builder: CREA la PARTE1 del objeto complejo y este objeto queda disponible para crear sus siguientes partes
                //------------------------------------------------------------------------------------------------------------------------------------------


                //Copio el documento (producto) creado:

                // Recorre el Dictionary para cada par de valores dentro del objeto complejo creado
                foreach (KeyValuePair <string, PartesDocumento> parte_par in documentoBuilder.Documento._partes)
                {
                    if (parte_par.Key == "cabecera")
                    {
                        //MyClass result = list.Find(x => x.Id == "xy");
                        //MyClass result = list.Find(x => x.GetId() == "xy");

                        Pagina pagina_aux = new DatosSolicitud();

                        foreach (Pagina pagina in parte_par.Value.Paginas)
                        {
                            //Cargo la pagina datos solicitud del objeto complejo SolicitudBuilder
                            Type type = pagina.GetType();
                            if (type.Equals(typeof(DatosSolicitud)))
                            {
                                pagina_aux = pagina;
                            }
                        }

                        var index = parte_par.Value.Paginas.IndexOf(pagina_aux);

                        if (index != -1)
                        {
                            parte_par.Value.Paginas[index] = datosSolicitud;
                        }
                    }
                }

                // Cargo los datos del formulario "datosSolicitud" recibido al documento complejo creado en el paso anterior
                //documentoBuilder.Documento["cabecera"].Paginas.Find(x => x.PaginaID == 1) = datosSolicitud;

                // Copio el documento complejo recién creado con las ultimas modificaciones, a la parte que corresponda de la nueva VENTA
                //Venta ventaNueva = new Ventas();
                //ventaNueva.VentaSolicitud = documentoBuilder.Documento
                // Grabo la nueva venta
                //db.Ventas.Add(Venta);

                db.DatosSolicituds.Add(datosSolicitud);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(datosSolicitud));
        }
        public ActionResult Create([Bind(Include = "SolicitudID,SolicitudNum,SolicitudDescripcion,EmpleadoID,ProspectoID,ClienteID,SolicitudTipoSolicitante,SolicitudFecCreacion,SolicitudFecVencimiento,SucursalID,SolicitudEstado,SolicitudMontoTotal")] Solicitud solicitud)
        {
            //solicitud.SolicitudOwnerID = HttpContext.User.Identity.Name;
            try
            {
                if (ModelState.IsValid)
                {
                    //******
                    //LLAMADA PATRONES-INI
                    //------------------------------------------------------------------------------------------------------------------------------------------
                    //--CREACIÓN DEL OBJETO COMPLEJO "SOLICITUD" PASO 1--
                    //Patrón Builder: CREA un documento con sus respectivas páginas de datos vacías, las cuales se completan a medida que se avanza con el desarrollo del documento en cuestión
                    //------------------------------------------------------------------------------------------------------------------------------------------

                    //The 'Builder' abstract class. La clase abstracta para asignar la clase concreta que quiero crear. En este caso: SOLICITUD
                    DocumentoBuilder solicitudBuilder;

                    //The 'Director' class. Es la clase que usa el objeto complejo concreto para ejecutar el método "construir" que tiene los pasos de creación de cada parte de un documento
                    DirectorDocumento directorSolicitud = new DirectorDocumento();

                    // Construyo el documento complejo que necesite vacío
                    solicitudBuilder = new SolicitudBuilder();
                    directorSolicitud.Construir(solicitudBuilder);

                    //Cargo el list de paginas del documento en cración. VIEWMODEL a renderizar en la vista
                    //ConstructorDocumento.Documento.partes

                    solicitud.Solicitud_Paginas = solicitudBuilder.Documento.paginas.Values.ToList();

                    Documento doc = new Documento();
                    doc = solicitudBuilder.Documento;

                    //Patron State
                    //doc.State = new ConcreteStateBorrador();
                    //doc.Request();

                    //LLAMADA PATRONES-FIN
                    //******


                    solicitud.SolicitudOwnerID = HttpContext.User.Identity.Name;
                    if (solicitud.SolicitudTipoSolicitante == "1")
                    {
                        solicitud.ClienteID         = null;
                        solicitud.Solicitud_Cliente = null;
                    }
                    else if (solicitud.SolicitudTipoSolicitante == "2")
                    {
                        solicitud.ProspectoID         = null;
                        solicitud.Solicitud_Prospecto = null;
                    }

                    if (ModelState.IsValid)
                    {
                        //if (!_service.CreateSolVenta(solicitud))
                        if (_service.CreateSolVentaID(solicitud) == 0)
                        {
                            return(View());
                        }

                        //return RedirectToAction("Index");
                        return(RedirectToAction("Create", "LineaSolicitud", new { solicitudID = solicitud.SolicitudID }));

                        //db.Solicituds.Add(solicitud);
                        //db.SaveChanges();
                        //return RedirectToAction("Index");
                    }
                    //    ModelState.AddModelError("", "Debe cargar al menos un Producto en las Líneas de Detalle de la Solicitud antes de Guardar");
                }
            }
            catch (RetryLimitExceededException /* dex */)
            {
                //Log the error (uncomment dex variable name and add a line here to write a log.)
                ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
            }

            //PopulateCuentaDropDownList(solicitud.CuentaID);

            //if (solicitud.SolicitudTipoSolicitante == "Cliente")
            //{
            PopulateClienteDropDownList(solicitud.ClienteID);
            //}
            //else if (solicitud.SolicitudTipoSolicitante == "Cliente")
            //{
            PopulateProspectoDropDownList(solicitud.ProspectoID);
            //}

            PopulateEmpleadoDropDownList(solicitud.EmpleadoID);

            PopulateSucursalDropDownList(solicitud.SucursalID);

            PopulateEstadosDropDownList(solicitud.SolicitudEstado);

            PopulateTipoSolicitanteDropDownList(solicitud.SolicitudTipoSolicitante);

            return(View(solicitud));
        }