public object EliminarNumeroUnico(int numeroUnicoID, Sam3_Usuario usuario) { try { using (SamContext ctx = new SamContext()) { using (var ctx_tran = ctx.Database.BeginTransaction()) { using (Sam2Context ctx2 = new Sam2Context()) { using (var ctx2_tran = ctx2.Database.BeginTransaction()) { int sam2_NumeroUnicoID = (from eq in ctx.Sam3_EquivalenciaNumeroUnico where eq.Activo && eq.Sam3_NumeroUnicoID == numeroUnicoID select eq.Sam2_NumeroUnicoID).AsParallel().SingleOrDefault(); NumeroUnico NumeroUnicoSam2 = ctx2.NumeroUnico.Where(x => x.NumeroUnicoID == sam2_NumeroUnicoID).AsParallel().SingleOrDefault(); //buscamos si tiene procesos en ODTM bool tieneProcesos = (from odtm in ctx2.OrdenTrabajoMaterial where odtm.NumeroUnicoCongeladoID == NumeroUnicoSam2.NumeroUnicoID || odtm.NumeroUnicoDespachadoID == NumeroUnicoSam2.NumeroUnicoID || odtm.NumeroUnicoSugeridoID == NumeroUnicoSam2.NumeroUnicoID select odtm).Any(); bool tieneInventarioCongelado = (from nui in ctx.Sam3_NumeroUnicoInventario where nui.NumeroUnicoID == NumeroUnicoSam2.NumeroUnicoID select nui.InventarioCongelado).AsParallel().SingleOrDefault() > 0 ? true : false; bool tieneInventarioTransferenciaCorte = (from nui in ctx.Sam3_NumeroUnicoInventario where nui.NumeroUnicoID == NumeroUnicoSam2.NumeroUnicoID select nui.InventarioTransferenciaCorte).AsParallel().SingleOrDefault() > 0 ? true : false; if (!tieneProcesos && !tieneInventarioCongelado && !tieneInventarioTransferenciaCorte) { //Para eliminar el numero unico de sam 2 solo hay que ponerlo en estatus C NumeroUnicoSam2.Estatus = "C"; NumeroUnicoSam2.FechaModificacion = DateTime.Now; ctx2.SaveChanges(); Sam3_NumeroUnico numUnicoS3 = ctx.Sam3_NumeroUnico.Where(x => x.NumeroUnicoID == numeroUnicoID).AsParallel().SingleOrDefault(); numUnicoS3.Activo = false; numUnicoS3.FechaModificacion = DateTime.Now; numUnicoS3.UsuarioModificacion = usuario.UsuarioID; numUnicoS3.Sam3_NumeroUnicoInventario.Activo = false; numUnicoS3.Sam3_NumeroUnicoInventario.FechaModificacion = DateTime.Now; numUnicoS3.Sam3_NumeroUnicoInventario.UsuarioModificacion = usuario.UsuarioID; foreach (Sam3_NumeroUnicoSegmento segmento in numUnicoS3.Sam3_NumeroUnicoSegmento) { segmento.Activo = false; segmento.FechaModificacion = DateTime.Now; segmento.UsuarioModificacion = usuario.UsuarioID; } Sam3_Rel_NumeroUnico_RelFC_RelB relnu = ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.NumeroUnicoID == numeroUnicoID).AsParallel().SingleOrDefault(); relnu.Activo = false; relnu.FechaModificacion = DateTime.Now; relnu.UsuarioModificacion = usuario.UsuarioID; ctx.SaveChanges(); if (relnu.Rel_FolioCuantificacion_ItemCode_ID != null) { Sam3_Rel_FolioCuantificacion_ItemCode relfc = ctx.Sam3_Rel_FolioCuantificacion_ItemCode .Where(x => x.Rel_FolioCuantificacion_ItemCode_ID == relnu.Rel_FolioCuantificacion_ItemCode_ID).AsParallel().SingleOrDefault(); //if (ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.Rel_FolioCuantificacion_ItemCode_ID == relfc.Rel_FolioCuantificacion_ItemCode_ID // && x.Activo).Distinct().Count() <= 0) //{ relfc.TieneNumerosUnicos = false; //} ctx.SaveChanges(); } if (relnu.Rel_Bulto_ItemCode_ID != null) { Sam3_Rel_Bulto_ItemCode relbu = ctx.Sam3_Rel_Bulto_ItemCode.Where(x => x.Rel_Bulto_ItemCode_ID == relnu.Rel_Bulto_ItemCode_ID).AsParallel().SingleOrDefault(); //if (ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.Rel_Bulto_ItemCode_ID == relbu.Rel_Bulto_ItemCode_ID // && x.Activo).Distinct().Count() <= 0) //{ relbu.TieneNumerosUnicos = false; //} ctx.SaveChanges(); } ctx.SaveChanges(); } else { throw new Exception("No se puede Eliminar el Número Único pues tiene algun proceso capturado"); } ctx_tran.Commit(); ctx2_tran.Commit(); } } } } TransactionalInformation result = new TransactionalInformation(); result.ReturnMessage.Add("OK"); result.ReturnCode = 200; result.ReturnStatus = true; result.IsAuthenicated = true; return(result); } catch (Exception ex) { //-----------------Agregar mensaje al Log ----------------------------------------------- LoggerBd.Instance.EscribirLog(ex); //-----------------Agregar mensaje al Log ----------------------------------------------- TransactionalInformation result = new TransactionalInformation(); result.ReturnMessage.Add(ex.Message); result.ReturnCode = 500; result.ReturnStatus = false; result.IsAuthenicated = true; return(result); } }
public object ConvertirJuntasPorODTS(int odtsID, Sam3_Usuario usuario) { try { using (SamContext ctx = new SamContext()) { using (var ctx_tran = ctx.Database.BeginTransaction()) { using (Sam2Context ctx2 = new Sam2Context()) { using (var ctx2_tran = ctx2.Database.BeginTransaction()) { //buscamos las juntas que aun no tienen ningun proceso de armado, soldadura o inspeccion visual List <JuntaSpool> listaJuntas = (from js in ctx2.JuntaSpool join odts in ctx2.OrdenTrabajoSpool on js.SpoolID equals odts.SpoolID where odts.OrdenTrabajoSpoolID == odtsID && !(from jwks in ctx2.JuntaWorkstatus where jwks.JuntaSpoolID == js.JuntaSpoolID && jwks.JuntaArmadoID > 0 && jwks.JuntaArmadoID != null && jwks.JuntaSoldaduraID > 0 && jwks.JuntaSoldaduraID != null && jwks.JuntaInspeccionVisualID > 0 && jwks.JuntaInspeccionVisualID != null && jwks.JuntaFinal select jwks.JuntaSpoolID).Contains(js.JuntaSpoolID) && (from tj in ctx2.TipoJunta where tj.Nombre == "SHOP" || tj.Nombre == "FIELD" select tj.TipoJuntaID).Contains(js.TipoJuntaID) select js).AsParallel().Distinct().ToList(); List <Sam3_JuntaSpool> sam3_JuntasSpool = (from eq in ctx.Sam3_EquivalenciaJuntaSpool join js in ctx.Sam3_JuntaSpool on eq.Sam3_JuntaSpoolID equals js.JuntaSpoolID where listaJuntas.Select(x => x.JuntaSpoolID).Contains(eq.Sam2_JuntaSpoolID) select js).AsParallel().ToList(); int sam2_fabAreaID = (from f in ctx2.FabArea where f.Nombre == "FIELD" select f.FabAreaID).AsParallel().SingleOrDefault(); int sam3_fabAreaID = (from f in ctx.Sam3_FabArea where f.Nombre == "FIELD" select f.FabAreaID).AsParallel().SingleOrDefault(); listaJuntas.ForEach(x => x.FabAreaID = sam2_fabAreaID); sam3_JuntasSpool.ForEach(x => x.FabAreaID = sam3_fabAreaID); ctx.SaveChanges(); ctx2.SaveChanges(); ctx2_tran.Commit(); } } ctx_tran.Commit(); } } return(ObtenerJuntasPorODTS(odtsID, usuario)); } catch (Exception ex) { //-----------------Agregar mensaje al Log ----------------------------------------------- LoggerBd.Instance.EscribirLog(ex); //-----------------Agregar mensaje al Log ----------------------------------------------- TransactionalInformation result = new TransactionalInformation(); result.ReturnMessage.Add(ex.Message); result.ReturnCode = 500; result.ReturnStatus = false; result.IsAuthenicated = true; return(result); } }