public async Task <PedidoTrabajoAccionesResponse> ResponderInconvenientePT(MCMovBanPTRequest request) { try { //MovBand var maxIdBan = await context.McmovBanPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true).MaxAsync(b => (int?)b.INumDesBanPt) ?? 0; var mov = await context.McmovBanPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true && m.INumDesBanPt == maxIdBan).AsNoTracking().FirstOrDefaultAsync() ?? null; var MCMovBanPT = new McmovBanPt { BEstRegistro = true, INumIdPt = request.iNumIdPT, INumDetPt = request.iNumDetPT, SdFecCreacion = DateTime.Now, VCodUsuCreacion = request.vCodUsuarioCreacion, INumDesBanPt = maxIdBan == 0 ? 1 : maxIdBan + 1, CTipBandeja = "2", CEstBandeja = "1", ICodTraResponsable = mov.ICodTraResponsable, vContenido = request.Mensaje, SdFecIngreso = DateTime.Now, CNomTerCreacion = request.Terminal }; await context.McmovBanPt.AddAsync(MCMovBanPT); await context.SaveChangesAsync(); mov.SdFecFinalizacion = DateTime.Now; mov.VCodUsuModificacion = request.vCodUsuarioCreacion; mov.CNomTerModificacion = request.Terminal; mov.SdFecModificacion = DateTime.Now; mov.CEstBandeja = "2"; context.McmovBanPt.Update(mov); await context.SaveChangesAsync(); if (request.Rutas != null) { if (request.Rutas.Count() > 0) { foreach (var ruta in request.Rutas) { var maxIdAdj = await context.McmaeAdjPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true).MaxAsync(b => (int?)b.INumDetAdjT) ?? 0; var adjunto = new McmaeAdjPt { INumIdPt = request.iNumIdPT, INumDetPt = request.iNumDetPT, SdFecCreacion = DateTime.Now, CNomTerCreacion = request.Terminal, INumDetAdjT = maxIdAdj == 0 ? 1 : maxIdAdj + 1, VRutaAdjunto = ruta, ITipAdjunto = 2, BEstRegistro = true, VCodUsuCreacion = request.vCodUsuarioCreacion }; await context.McmaeAdjPt.AddAsync(adjunto); await context.SaveChangesAsync(); } } } if (!string.IsNullOrEmpty(request.Email)) { var mailRequest = new McSendMailRequest { Asunto = "Se ha registrado una incidencia para el pedido de trabajo " + request.PedidoTrabajo, Texto_Notificar = !string.IsNullOrEmpty(request.Mensaje) ? request.Mensaje : "Se ha registrado una incidencia para el pedido de trabajo " + request.PedidoTrabajo, Cuenta_Notificar = request.Email, Cuentas_Copias = "", Profile_Correo = "" }; //Descomentar la línea siguiente para enviar correo electrónico al responsable SendMail(mailRequest); } return(new PedidoTrabajoAccionesResponse { Exito = true, Mensaje = "Operacion realizada exitosamente" }); } catch (Exception ex) { return(new PedidoTrabajoAccionesResponse { Exito = false, Mensaje = "Ha ocurrido un error inesperado " + ex.Message }); } }
public async Task <PedidoTrabajoAccionesResponse> RegistrarInconvenientePT(MCMovBanPTRequest request) { try { var listaMotivos = !string.IsNullOrEmpty(request.VTipInconveniente)? request.VTipInconveniente.Split(','): null; //Movimiento de Estado var maxIdEst = await context.McmovEstPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true).MaxAsync(m => (int?)m.INumDetEstPt) ?? 0; var mov = await context.McmovEstPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true && m.INumDetEstPt == maxIdEst).AsNoTracking().FirstOrDefaultAsync() ?? null; var MCMovEstadoPT = new McmovEstPt { BEstRegistro = true, CEstPt = "I", INumIdPt = request.iNumIdPT, INumDetPt = request.iNumDetPT, SdFecCreacion = DateTime.Now, SdFecIniEstado = DateTime.Now, VCodUsuCreacion = request.vCodUsuarioCreacion, INumDetEstPt = mov == null ? 1 : mov.INumDetEstPt + 1, CNomTerCreacion = request.Terminal }; await context.McmovEstPt.AddAsync(MCMovEstadoPT); await context.SaveChangesAsync(); //Actualizar registro anterior mov.SdFecFinEstado = DateTime.Now; mov.VCodUsuModificacion = request.vCodUsuarioCreacion; mov.CNomTerModificacion = request.Terminal; mov.SdFecModificacion = DateTime.Now; context.McmovEstPt.Update(mov); await context.SaveChangesAsync(); //MovBand var maxIdBan = await context.McmovBanPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true).MaxAsync(b => (int?)b.INumDesBanPt) ?? 0; var MCMovBanPT = new McmovBanPt { BEstRegistro = true, INumIdPt = request.iNumIdPT, INumDetPt = request.iNumDetPT, SdFecCreacion = DateTime.Now, VCodUsuCreacion = request.vCodUsuarioCreacion, INumDesBanPt = maxIdBan == 0 ? 1 : maxIdBan + 1, CTipBandeja = "1", CEstBandeja = "1", ICodTraResponsable = request.ICodTraResponsable, vContenido = request.Mensaje, SdFecIngreso = DateTime.Now, CNomTerCreacion = request.Terminal }; await context.McmovBanPt.AddAsync(MCMovBanPT); await context.SaveChangesAsync(); var maxIdMovInc = await context.McmovIncPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true).MaxAsync(b => (int?)b.INumDetIncPt) ?? 0; if (listaMotivos != null) { foreach (var item in listaMotivos) { var MCMovIncPT = new McmovIncPT { BEstRegistro = true, INumIdPt = request.iNumIdPT, INumDetPt = request.iNumDetPT, INumDetIncPt = maxIdMovInc == 0 ? 1 : maxIdMovInc + 1, SdFecCreacion = DateTime.Now, VCodUsuCreacion = request.vCodUsuarioCreacion, ICodCatInconveniente = int.Parse(item.Split('|')[1]), ICodMotInconveniente = int.Parse(item.Split('|')[0]), CNomTerCreacion = request.Terminal }; await context.McmovIncPt.AddAsync(MCMovIncPT); await context.SaveChangesAsync(); maxIdMovInc += 1; } } if (!string.IsNullOrEmpty(request.VDescInconveniente)) { var maxIdMovInc1 = await context.McmovIncPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true).MaxAsync(b => (int?)b.INumDetIncPt) ?? 0; var MCMovIncPT = new McmovIncPT { BEstRegistro = true, INumIdPt = request.iNumIdPT, INumDetPt = request.iNumDetPT, INumDetIncPt = maxIdMovInc1 == 0 ? 1 : maxIdMovInc1 + 1, SdFecCreacion = DateTime.Now, VCodUsuCreacion = request.vCodUsuarioCreacion, ICodCatInconveniente = request.IdCategoria, CNomTerCreacion = request.Terminal, vDesMotInconveniente = request.VDescInconveniente }; await context.McmovIncPt.AddAsync(MCMovIncPT); await context.SaveChangesAsync(); } var McMaePT = await context.McmaePt.Where(x => x.INumIdPt == request.iNumIdPT).AsNoTracking().FirstOrDefaultAsync(); McMaePT.CEstPt = "I"; McMaePT.VCodUsuModificacion = request.vCodUsuarioCreacion; McMaePT.CNomTerModificacion = request.Terminal; McMaePT.SdFecModificacion = DateTime.Now; context.McmaePt.Update(McMaePT); await context.SaveChangesAsync(); if (request.Rutas != null) { foreach (var ruta in request.Rutas) { var maxIdAdj = await context.McmaeAdjPt.Where(m => m.INumIdPt == request.iNumIdPT && m.INumDetPt == request.iNumDetPT && m.BEstRegistro == true).MaxAsync(b => (int?)b.INumDetAdjT) ?? 0; var adjunto = new McmaeAdjPt { INumIdPt = request.iNumIdPT, INumDetPt = request.iNumDetPT, SdFecCreacion = DateTime.Now, CNomTerCreacion = request.Terminal, INumDetAdjT = maxIdAdj == 0 ? 1 : maxIdAdj + 1, VRutaAdjunto = ruta, ITipAdjunto = 1, BEstRegistro = true, VCodUsuCreacion = request.vCodUsuarioCreacion }; await context.McmaeAdjPt.AddAsync(adjunto); await context.SaveChangesAsync(); } } if (!string.IsNullOrEmpty(request.Email)) { var mailRequest = new McSendMailRequest { Asunto = "Se ha registrado una incidencia para el pedido de trabajo " + request.PedidoTrabajo, Texto_Notificar = !string.IsNullOrEmpty(request.Mensaje)? request.Mensaje: "Se ha registrado una incidencia para el pedido de trabajo " + request.PedidoTrabajo, Cuenta_Notificar = request.Email, Cuentas_Copias = "", Profile_Correo = "" }; //Descomentar la línea siguiente para enviar correo electrónico al responsable SendMail(mailRequest); } return(new PedidoTrabajoAccionesResponse { Exito = true, Mensaje = "Operacion realizada exitosamente" }); } catch (Exception ex) { return(new PedidoTrabajoAccionesResponse { Exito = false, Mensaje = "Ha ocurrido un error inesperado " + ex.Message }); } }