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)); }
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)); }