using Apphr.Application.Common.Models;using Apphr.Application.Ortopedia.ORTMovimientos.DTOs;using Apphr.Application.Ortopedia.SolicitudesPedido.DTOs;using Apphr.Domain.Entities.Ortopedia;using Apphr.Domain.Enums;using Apphr.WebUI.Common;using Apphr.WebUI.Controllers;using Apphr.WebUI.CustomAttributes;using PagedList;using System;using System.Collections.Generic;using System.Data.Entity;using System.Linq;using System.Threading.Tasks;using System.Web.Mvc;
namespace Apphr.WebUI.Areas.Ortopedia.Controllers{ [Authorize] [LogAction] public class SolicitudPedidoController : DbController { [AppAuthorization(Permit.View)] public ActionResult Index() // GET { ViewBag.Permissions = Utilidades.GetPermissions(ControllerContext, userName); return View(); }
[AppAuthorization(Permit.Edit, Permit.Create)] public async Task<ActionResult> CEdit(int id, string Mode = "INS") // GET { var reg = await db.ORTSolicitudesPedido.FindAsync(id); var dto = new SolicitudPedidoDTOEdit() { Anio = reg.Anio, SolicitudPedidoId = reg.SolicitudPedidoId, Fecha = reg.Fecha, Numero = reg.Numero, TipoPrioridad = reg.TipoPrioridad, TipoEvento = reg.TipoEvento, Elaboro = reg.Elaboro, Solicito = reg.Solicito, JefeDepartamento = reg.JefeDepartamento, Gerente = reg.Gerente, Director = reg.Director, Observaciones = reg.Observaciones }; ViewBag.Mode = Mode; ViewBag.ListTipo = TipoPrioridad.GetSelectList(); ViewBag.ListTipoEvento = TipoEvento.GetSelectList(); ViewBag.Permissions = Utilidades.GetPermissions(ControllerContext, userName); return View(dto); }
[ValidateAntiForgeryToken] public async Task<ActionResult> JsIndexGrid(string Buscar, int? Page) // GET { IQueryable<ORTCirujano> regs; int pageIndex = Page.HasValue ? Convert.ToInt32(Page) : 1;
regs = (from p in db.ORTCirujanos select p);
if (Buscar != null) { if (!string.IsNullOrEmpty(Buscar)) regs = regs.Where(x => x.Nombre.Contains(Buscar)); // || x.Descripcion.Contains(Buscar)); } var res = await regs .OrderBy(x => x.Nombre) .Select(s => new CirujanoDTOIxGrid { CirujanoId = s.CirujanoId, Nombre = s.Nombre }) .ToListAsync();
var dto = (PagedList<CirujanoDTOIxGrid>)res.ToPagedList(pageIndex, pageSize);
ViewBag.PLROpions = PagedListOptions; return PartialView("_IndexGrid", dto); }
public ActionResult JsGetCreateForm() // GET { Permit[] permisosRequeridos = { Permit.Create }; bool hasPermit = Utilidades.hasPermit(permisosRequeridos, ControllerContext, userName); if (!hasPermit) { return Json(new { success = false, message = Resources.Msg.privileges_none }, JsonRequestBehavior.AllowGet); } var dto = new SolicitudPedidoDTOCreate(); ViewBag.ListTipoPrioridad = TipoPrioridad.GetSelectList(); ViewBag.ListTipoEvento = TipoEvento.GetSelectList(); dto.SolicitudPedidoId = 0; dto.Anio = DateTime.Now.Year; dto.Fecha = DateTime.Now;
return PartialView("_CreateMaster", dto); }
public async Task<ActionResult> JsGetFormChild(int? id) // GET { var dto = new SolicitudPedidoDTOCEditDetail(); if (id == null) { dto.SolicitudPedidoId = 0; } else { var reg = await db.ORTMovimientos .Where(x => x.MovimientoId == id) .Include(i => i.Material) .FirstOrDefaultAsync(); dto.MovimientoId = reg.MovimientoId; dto.SolicitudPedidoId = reg.SolicitudPedidoId; dto.Fecha = reg.Fecha; dto.MaterialCodigo = reg.Material.Codigo; dto.MaterialNombre = reg.Material.Descripcion; dto.MaterialPrecio = reg.Material.Precio; dto.UnidadMedida = reg.Material.UnidadMedida; dto.MaterialId = reg.MaterialId; dto.Cantidad = reg.Cantidad; dto.Precio = reg.Precio; dto.Valor = reg.Valor; } return PartialView("_CEditDetail", dto); }
[ValidateAntiForgeryToken] public async Task<JsonResult> JsSaveMaster(EntityDTOCreate dto) // POST { List<Permit> ListPermit = new List<Permit>();
if (dto.SolicitudPedidoId == 0) ListPermit.Add(Permit.Create); else ListPermit.Add(Permit.Edit); bool hasPermit = Utilidades.hasPermit(ListPermit.ToArray(), ControllerContext, userName); if (!hasPermit) { return Json(new { success = false, message = Resources.Msg.privileges_none }, JsonRequestBehavior.DenyGet); } try { if (!ModelState.IsValid) { return Json(new { success = false, message = Resources.Msg.failure_model_invalid }); } if (dto.SolicitudPedidoId == 0) { // INSERT // Validación Adicional if(db.ORTSolicitudesPedido.Any(x => x.Anio == dto.Fecha.Year && x.Numero == dto.Numero)) { return Json(new { success = false, message = "Esta Solicitud de Pedido ya esta registrada." }); } var reg = new ORTSolicitudPedido() { Anio = dto.Fecha.Year, Fecha = dto.Fecha, Numero = dto.Numero, TipoPrioridad = dto.TipoPrioridad, TipoEvento = dto.TipoEvento, Elaboro = dto.Elaboro, Solicito = dto.Solicito, JefeDepartamento = dto.JefeDepartamento, Gerente = dto.Gerente, Director = dto. Director, Observaciones = dto.Observaciones, Lineas = 0 };
db.ORTSolicitudesPedido.Add(reg); await db.SaveChangesAsync(); return Json(new { success = true, message = Resources.Msg.success_create, data = reg }, JsonRequestBehavior.DenyGet); } else { // UPDATE var reg = await db.ORTSolicitudesPedido .Where(x => x.SolicitudPedidoId == dto.SolicitudPedidoId) .FirstOrDefaultAsync();
reg.Elaboro = dto.Elaboro; reg.Solicito = dto.Solicito; reg.JefeDepartamento = dto.JefeDepartamento; reg.Gerente = dto.Gerente; reg.Director = dto.Director; reg.Observaciones = dto.Observaciones; await db.SaveChangesAsync(); return Json(new { success = true, message = Resources.Msg.success_edit, data = reg }, JsonRequestBehavior.DenyGet); } } catch (Exception ex) { return Json(new { success = false, message = Resources.Msg.failure, messageEx = ex.Message, messageInner = ex.InnerException }, JsonRequestBehavior.DenyGet); } }
[ValidateAntiForgeryToken] public async Task<JsonResult> JsDeleteMaster(int id) // POST { Permit[] permisosRequeridos = { Permit.Delete }; bool hasPermit = Utilidades.hasPermit(permisosRequeridos, ControllerContext, userName); if (!hasPermit) { return Json(new { success = false, message = Resources.Msg.privileges_none }, JsonRequestBehavior.DenyGet); } try { using (DbContextTransaction t = db.Database.BeginTransaction()) { try { var reg = await db.ORTSolicitudesPedido .Where(x => x.SolicitudPedidoId == id) .FirstOrDefaultAsync(); var det = await db.ORTMovimientos .Where(x => x.SolicitudPedidoId == id) .ToListAsync(); foreach (var item in det) { db.ORTMovimientos.Remove(item); }
db.ORTSolicitudesPedido.Remove(reg);
await db.SaveChangesAsync(); t.Commit(); } catch (Exception) { t.Rollback(); throw; } } return Json(new { success = true, message = Resources.Msg.success_delete }, JsonRequestBehavior.DenyGet); } catch (Exception ex) { return Json(new { success = false, message = Resources.Msg.failure, exMessage = ex.Message, exInner = ex.InnerException }, JsonRequestBehavior.DenyGet); } }
[ValidateAntiForgeryToken] public async Task<JsonResult> JsSaveChild(SolicitudPedidoDTOCEditDetail dto) // POST { List<Permit> Permisos = new List<Permit>(); if (dto.Mode == "INS") Permisos.Add(Permit.Create); if (dto.Mode == "UPD") Permisos.Add(Permit.Edit);
bool hasPermit = Utilidades.hasPermit(Permisos.ToArray(), ControllerContext, userName); if (!hasPermit) { return Json(new { success = false, message = Resources.Msg.privileges_none }, JsonRequestBehavior.DenyGet); } try { if (!ModelState.IsValid) { return Json(new { success = false, message = Resources.Msg.failure_model_invalid }); } if (dto.MovimientoId == 0) { // INSERT // Validación Adicional //if (db.ORTSolicitudesPedido.Any(x => x.Anio == dto.Fecha.Year && x.Numero == dto.Numero)) //{ // return Json(new { success = false, message = "Esta Solicitud de Pedido ya esta registrada." }); //} ORTMovimiento reg = new ORTMovimiento() { Tipo = "SOL", SolicitudPedidoId = dto.SolicitudPedidoId, Cantidad = dto.Cantidad, Precio = dto.Precio, Valor = dto.Valor, Fecha = dto.Fecha, Linea = 0, MaterialId = dto.MaterialId }; using (DbContextTransaction transaction = db.Database.BeginTransaction()) { try { var SolPed = await db.ORTSolicitudesPedido.Where(x => x.SolicitudPedidoId == dto.SolicitudPedidoId).FirstOrDefaultAsync(); SolPed.Lineas += 1;
db.ORTMovimientos.Add(reg); await db.SaveChangesAsync(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } }
return Json(new { success = true, message = Resources.Msg.success_create, data = reg }, JsonRequestBehavior.DenyGet); } else { // UPDATE ORTMovimiento reg = new ORTMovimiento(); using (DbContextTransaction transaction = db.Database.BeginTransaction()) { try { reg = await db.ORTMovimientos .Where(x => x.MovimientoId == dto.MovimientoId) .FirstOrDefaultAsync();
reg.Cantidad = dto.Cantidad; reg.Precio = dto.Precio; reg.Valor = dto.Valor;
await db.SaveChangesAsync(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } return Json(new { success = true, message = Resources.Msg.success_edit, data = reg }, JsonRequestBehavior.DenyGet); } } catch (Exception ex) { return Json(new { success = false, message = Resources.Msg.failure, messageEx = ex.Message, messageInner = ex.InnerException }, JsonRequestBehavior.DenyGet); } }
[ValidateAntiForgeryToken] public async Task<JsonResult> JsDeleteChild(int id) // POST { Permit[] permisosRequeridos = { Permit.Delete }; bool hasPermit = Utilidades.hasPermit(permisosRequeridos, ControllerContext, userName); if (!hasPermit) { return Json(new { success = false, message = Resources.Msg.privileges_none }, JsonRequestBehavior.DenyGet); } try { using (DbContextTransaction transaction = db.Database.BeginTransaction()) { try { var reg = await db.ORTMovimientos .Where(x => x.MovimientoId == id) .FirstOrDefaultAsync(); db.ORTMovimientos.Remove(reg); await db.SaveChangesAsync(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } return Json(new { success = true, message = Resources.Msg.success_delete }, JsonRequestBehavior.DenyGet); } catch (Exception ex) { return Json(new { success = false, message = Resources.Msg.failure, exMessage = ex.Message, exInner = ex.InnerException }, JsonRequestBehavior.DenyGet); } }
public async Task<ActionResult> JsGrid(int? id, string mode) // GET { if (id == null) { return null; } var dto = await db.ORTMovimientos .Where(x => x.SolicitudPedidoId == id) .Include(i => i.Material) .Select(s => new MovimientoDTOJsGrid() { MovimientoId = s.MovimientoId, SolicitudPedidoId = s.SolicitudPedidoId, Material = s.Material, Cantidad = s.Cantidad, Valor = s.Valor, Precio = s.Precio }) .ToListAsync(); ViewBag.Mode = mode; return PartialView("_CEditGrid", dto); } public async Task<ActionResult> JsView(int? id) // GET { var reg = await db.ORTSolicitudesPedido.FindAsync(id); var dto = new SolicitudPedidoDTOView() { Anio = reg.Anio, Fecha = reg.Fecha, Numero = reg.Numero, TipoPrioridad = reg.TipoPrioridad, TipoPrioridadText = TipoPrioridad.GetText(reg.TipoPrioridad), Observaciones = reg.Observaciones, TipoEvento = reg.TipoEvento, TipoEventoText = TipoEvento.GetText(reg.TipoEvento), Elaboro = reg.Elaboro, Solicito = reg.Solicito, JefeDepartamento = reg.JefeDepartamento, Director = reg.Director, Gerente = reg.Gerente }; //dto.Detalle = new List<MovimientoDTOBase>();
var regs = await db.ORTMovimientos.Where(x => x.SolicitudPedidoId == id) .Include(i => i.Material) .Select(s => new MovimientoDTOBase() { Material = s.Material, Cantidad = s.Cantidad, Precio = s.Precio, Valor = s.Valor }) .ToListAsync(); dto.Detalle = regs; return PartialView("_View", dto); } }}