public string ChangeEstadoPauta(int pautaId, string est, string motivo) { var pauta = PdmContext.Pautas.Single(e => e.Id == pautaId); try { var estado = (EstadoPauta)Enum.Parse(typeof(EstadoPauta), est); pauta.Estado = estado; pauta.UpdateDate = DateTime.Now; pauta.UpdatedBy = UsuarioLogged; if (pauta.Campania.Pautas.All(e => e.Estado == estado)) { pauta.Campania.UpdateDate = DateTime.Now; pauta.Campania.UpdatedBy = UsuarioLogged; pauta.Campania.Estado = estado == EstadoPauta.Aprobada ? EstadoCampania.Aprobada : EstadoCampania.Rechazada; } SyncEstadoPautas(new List <Pauta> { pauta }, (estado == EstadoPauta.Aprobada ? 1 : 0), motivo); PdmContext.SaveChanges(); LogChangeEstadoPautaInfo(pauta, est, motivo); } catch (Exception ex) { LogChangeEstadoPautaError(pauta, est, motivo, ex); throw; } return(pauta.Campania.Estado.ToString()); }
private void InitTarifario(Tarifario entity, double?importe = null, string oi = null) { var tarifas = FCMediosClient.Get <IList <TarifaFcMedios> >(GetTarifasAction) .Where(e => e.cod_vehiculo == entity.Vehiculo.Codigo).ToList(); var actualMedios = PdmContext.Medios.ToList(); var actualPlazas = PdmContext.Plazas.ToList(); var actualVehiculos = PdmContext.Vehiculos.ToList(); #region Tarifas var toAdd = new List <Entities.Tarifa>(); tarifas.ForEach(t => { var medio = actualMedios.Single(e => e.Codigo == t.cod_medio); var plaza = actualPlazas.Single(e => e.Codigo == t.cod_plaza); var vehiculo = actualVehiculos.Single(e => e.Codigo == t.cod_vehiculo); toAdd.Add(new Entities.Tarifa { CodigoPrograma = t.cod_programa, Descripcion = t.espacio, HoraDesde = t.hora_inicio, HoraHasta = t.hora_fin, Importe = importe ?? t.bruto, OrdenDeCompra = oi, ImporteOld = t.bruto, Lunes = t.Lunes, Martes = t.Martes, Miercoles = t.Miercoles, Jueves = t.Jueves, Viernes = t.Viernes, Sabado = t.Sabado, Domingo = t.Domingo, Medio = medio, Plaza = plaza, Tarifario = entity, Vehiculo = vehiculo, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true, Estado = t.bruto > 0 ? EstadoTarifa.PendienteAprobacion : EstadoTarifa.SinTarifaAsociada }); }); entity.Estado = toAdd.All(tt => tt.Estado == EstadoTarifa.PendienteAprobacion) ? EstadoTarifario.PendienteAprobacion : EstadoTarifario.Editable; PdmContext.Configuration.AutoDetectChangesEnabled = false; toAdd.ForEach(e => PdmContext.Tarifas.Add(e)); PdmContext.SaveChanges(); PdmContext.Configuration.AutoDetectChangesEnabled = true; PdmContext = new PDMContext(); #endregion }
public override Dtos.Tarifario Update(Dtos.Tarifario dto) { Validate(dto); var entity = ToEntity(dto); PdmContext.SaveChanges(); SaveFile(entity.Id); return(Mapper.Map <Entities.Tarifario, Dtos.Tarifario>(entity)); }
public void Aprobar(int tarifarioId) { var entity = default(Entities.Tarifario); try { entity = PdmContext.Tarifarios.Single(c => c.Id == tarifarioId); entity.Estado = EstadoTarifario.Aprobado; entity.UpdatedBy = UsuarioLogged; entity.UpdateDate = DateTime.Now; entity.Tarifas.ForEach(t => { t.Estado = EstadoTarifa.Aprobada; t.UpdatedBy = UsuarioLogged; t.UpdateDate = DateTime.Now; }); var tarifasFcMedios = entity.Tarifas .Select(t => new TarifaFcMediosUpdate { cod_programa = t.CodigoPrograma, bruto = t.Importe, descuento_1 = 0, descuento_2 = 0, descuento_3 = 0, descuento_4 = 0, descuento_5 = 0, fecha_tarifa = entity.FechaDesde.ToString("yyyy-MM-dd 00:00:00"), }).ToList(); new TarifasAdmin().SyncTarifas(tarifasFcMedios); PdmContext.SaveChanges(); LogAprobarInfo(entity); } catch (Exception ex) { LogAprobarError(entity, ex); throw; } }
public override void Delete(int id) { var entity = default(Entities.Tarifario); try { entity = PdmContext.Tarifarios.Single(c => c.Id == id); entity.Estado = EstadoTarifario.Eliminado; entity.UpdatedBy = UsuarioLogged; entity.UpdateDate = DateTime.Now; PdmContext.SaveChanges(); LogDeleteInfo(entity); } catch (Exception ex) { LogDeleteError(entity, ex); throw; } }
public override Dtos.Tarifario Create(Dtos.Tarifario dto) { Validate(dto); var entity = ToEntity(dto); PdmContext.Tarifarios.Add(entity); PdmContext.SaveChanges(); try { InitTarifario(entity, dto.Importe, dto.OrdenDeCompra); SaveFile(entity.Id); } catch (Exception ex) { PdmContext.Tarifarios.Remove(entity); PdmContext.SaveChanges(); LogCreateError(dto, ex); throw; } var lastTarifario = PdmContext.Tarifarios.Where(e => e.Estado != EstadoTarifario.Eliminado && e.Vehiculo.Id == dto.Vehiculo.Id && e.Id != entity.Id) .OrderByDescending(e => e.Id) .FirstOrDefault(); if (lastTarifario != null) { lastTarifario.Estado = EstadoTarifario.Cerrado; lastTarifario.UpdateDate = DateTime.Now; lastTarifario.UpdatedBy = UsuarioLogged; } PdmContext.SaveChanges(); dto = Mapper.Map <Tarifario, Dtos.Tarifario>(entity); LogCreateInfo(dto); return(dto); }
public void ChangeEstadoCampania(Dtos.Campania campaniaDto, string est, string motivo) { var campania = default(Entities.Campania); try { campania = PdmContext.Campanias.Single(e => e.Id == campaniaDto.Id); var estado = (EstadoCampania)Enum.Parse(typeof(EstadoCampania), est); campania.Centro = campaniaDto.Centro; campania.Almacen = campaniaDto.Almacen; campania.Orden = campaniaDto.Orden; campania.CentroDestino = campaniaDto.CentroDestino; campania.AlmacenDestino = campaniaDto.AlmacenDestino; campania.IdSapDistribucion = campaniaDto.IdSapDistribucion; campania.UpdateDate = DateTime.Now; campania.UpdatedBy = UsuarioLogged; campania.Estado = estado; campania.Pautas.ForEach(p => { p.UpdateDate = DateTime.Now; p.UpdatedBy = UsuarioLogged; p.Estado = estado == EstadoCampania.Aprobada ? EstadoPauta.Aprobada : EstadoPauta.Rechazada; }); SyncEstadoPautas(campania.Pautas, (estado == EstadoCampania.Aprobada ? 1 : 0), motivo); PdmContext.SaveChanges(); LogChangeEstadoCampaniaInfo(campania, est, motivo); } catch (Exception ex) { LogChangeEstadoCampaniaError(campania, est, motivo, ex); throw; } }
public override Dtos.Tarifa Update(Dtos.Tarifa dto) { var entity = ToEntity(dto); try { if (entity.Tarifario.Estado == EstadoTarifario.Editable && entity.Tarifario.Tarifas.All(t => t.Estado == EstadoTarifa.PendienteAprobacion)) { entity.Tarifario.Estado = EstadoTarifario.PendienteAprobacion; } PdmContext.SaveChanges(); LogUpdateInfo(dto); } catch (Exception ex) { LogUpdateError(dto, ex); throw; } return(Mapper.Map <Entities.Tarifa, Dtos.Tarifa>(entity)); }
public void SetValues(FilterTarifas filter, double?importe = null, int?oc = null, bool takeOld = false) { var tarifas = GetQuery(filter).OfType <Tarifa>().ToList(); var tarifario = PdmContext.Tarifarios.Single(e => e.Id == filter.TarifarioId); var tarifasFcMedios = new List <TarifaFcMediosUpdate>(); tarifas.ForEach(t => { if (importe.HasValue) { t.Importe = importe.Value; } if (oc.HasValue) { t.OrdenDeCompra = oc.Value.ToString(); } if (takeOld) { t.Importe = t.ImporteOld; } t.Estado = t.Importe > 0 ? EstadoTarifa.PendienteAprobacion : EstadoTarifa.SinTarifaAsociada; t.UpdateDate = DateTime.Now; t.UpdatedBy = UsuarioLogged; if (t.Importe > 0) { tarifasFcMedios.Add(new TarifaFcMediosUpdate { cod_programa = t.CodigoPrograma, bruto = t.Importe, descuento_1 = 0, descuento_2 = 0, descuento_3 = 0, descuento_4 = 0, descuento_5 = 0, fecha_tarifa = tarifario.FechaDesde.ToString("yyyy-MM-dd 00:00:00"), }); } }); #region Sync if (takeOld) { SyncTarifas(tarifasFcMedios); } #endregion EFBatchOperation.For(PdmContext, PdmContext.Tarifas).UpdateAll(tarifas, x => x.ColumnsToUpdate(t => t.Importe, t => t.OrdenDeCompra, t => t.UpdateDate, t => t.UpdatedBy, t => t.Estado)); if (!takeOld) { tarifario.Estado = tarifario.Tarifas.All(tt => tt.Estado == EstadoTarifa.PendienteAprobacion) ? EstadoTarifario.PendienteAprobacion : EstadoTarifario.Editable; } PdmContext.SaveChanges(); }
public void ConfirmarAprobacion(IList <ConfirmaionSap> confirmaciones) { var aprobacionesSapId = confirmaciones.Select(e => e.IdOrigen).ToList(); var aprobaciones = PdmContext.AprobacionesSap.Where(e => aprobacionesSapId.Contains(e.Id)).ToList(); var aprobacionesId = aprobaciones.Select(e => e.Id).ToList(); var diff = aprobacionesSapId.Except(aprobacionesId).ToList(); #region Validation if (confirmaciones.Any(e => e.IdOrigen == 0)) { throw new Exception(string.Format("El campo idOrigen es obligatorio ")); } if (confirmaciones.Any(e => string.IsNullOrEmpty(e.Resultado))) { throw new Exception(string.Format("El campo resultado es obligatorio ")); } if (confirmaciones.Any(e => !e.Metodo.HasValue)) { throw new Exception(string.Format("El campo metodo es obligatorio ")); } if (diff.Any()) { throw new Exception(string.Format("Los siguientes idOrigen no exiten en el sistema: {0}", string.Join(", ", diff))); } if (confirmaciones.Any(e => !string.Equals(e.Resultado, "Confirmada") && !string.Equals(e.Resultado, "Error"))) { throw new Exception(string.Format("Revise el valor ingresado en el campo resultado. Los valores posibles son: Confirmada y Error")); } if (confirmaciones.Any(e => e.Metodo != MetodoSap.Certificacion && e.Metodo != MetodoSap.Consumo && e.Metodo != MetodoSap.Provision)) { throw new Exception(string.Format("Revise el valor ingresado en el campo metodo. Los valores posibles son: Certificacion, Consumo y Provision")); } #endregion confirmaciones.ForEach(confirmacion => { var aprobacion = aprobaciones.Single(e => e.Id == confirmacion.IdOrigen); aprobacion.MensajeSap = confirmacion.Mensaneje; switch (confirmacion.Metodo.Value) { case MetodoSap.Certificacion: aprobacion.IdReferenciaCertificacion = confirmacion.IdSap; aprobacion.FechaConfirmacionCertificacion = DateTime.Now; aprobacion.EstadoCertificacion = string.Equals(confirmacion.Resultado, "Confirmada") ? EstadoAprobacionSap.Confirmada : EstadoAprobacionSap.Error; break; case MetodoSap.Consumo: aprobacion.IdReferenciaConsumo = confirmacion.IdSap; aprobacion.FechaConfirmacionConsumo = DateTime.Now; aprobacion.EstadoConsumo = string.Equals(confirmacion.Resultado, "Confirmada") ? EstadoAprobacionSap.Confirmada : EstadoAprobacionSap.Error; break; case MetodoSap.Provision: aprobacion.IdReferenciaProvision = confirmacion.IdSap; aprobacion.FechaConfirmacionProvision = DateTime.Now; aprobacion.EstadoProvision = string.Equals(confirmacion.Resultado, "Confirmada") ? EstadoAprobacionSap.Confirmada : EstadoAprobacionSap.Error; break; } }); PdmContext.SaveChanges(); }
public void SyncCertificaciones() { LogSyncCertificacionesInit(); try { var pautas = PdmContext.Pautas.Where(e => e.Estado == EstadoPauta.Aprobada).Select(e => new { nro_pauta_aprobada = e.Codigo }).ToList(); var certificaciones = FCMediosClient.Post <IList <CertificacionFcMedios> >(GetCertificaciones, pautas).ToList(); var campaniasCodigos = certificaciones.Select(e => e.cod_campania).Distinct().ToList(); var campanias = PdmContext.Campanias.Where(e => campaniasCodigos.Contains(e.Codigo)).ToList(); LogSyncCertificacionesDetail(certificaciones); certificaciones.ForEach(c => { var campania = campanias.SingleOrDefault(e => c.cod_campania == e.Codigo); var certificacion = PdmContext.Certificaciones.FirstOrDefault(e => string.Equals(e.PautaCodigo, c.nro_pauta_aprobada) && string.Equals(e.PautaEjecutadaCodigo, c.nro_pauta_ejecutada) && e.Campania.Codigo == c.cod_campania && e.CodigoPrograma == c.cod_programa); if (certificacion != null && certificacion.Estado == EstadoCertificacion.Aceptada) { return; } if (certificacion == null) { certificacion = new Entities.Certificacion { Campania = campania, CodigoAviso = c.cod_aviso, CodigoPrograma = c.cod_programa, CostoUnitario = c.costo_unitario, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Descuento1 = c.descuento_1, Descuento2 = c.descuento_2, Descuento3 = c.descuento_3, Descuento4 = c.descuento_4, Descuento5 = c.descuento_5, DuracionTema = c.duracion_tema, Enabled = true, Espacio = c.espacio, FechaAviso = c.fecha_aviso, PautaCodigo = c.nro_pauta_aprobada, PautaEjecutadaCodigo = c.nro_pauta_ejecutada, ProveedorCodigo = c.cod_proveedor, ProveedorNombre = c.des_proveedor, Tema = c.des_tema, Producto = c.des_producto }; } var estado = EstadoCertificacion.Aceptada; var pautaItem = PdmContext.PautasItem.FirstOrDefault(i => i.CodigoPrograma == c.cod_programa && i.Pauta.Codigo == c.nro_pauta_aprobada && i.Pauta.Campania.Id == campania.Id); if (campania == null) { estado = EstadoCertificacion.CampaniaNoRegistrada; } else if (campania.Estado == EstadoCampania.Cerrada) { estado = EstadoCertificacion.CampaniaCerrada; } else if (pautaItem == null) { estado = EstadoCertificacion.ProgramaNoPautado; } else if (campania.Estado != EstadoCampania.Cerrada && campania.Estado != EstadoCampania.Aprobada) { estado = EstadoCertificacion.CampaniaNoAprobada; } certificacion.Estado = estado; if (certificacion.Id == 0) { PdmContext.Certificaciones.Add(certificacion); } if (pautaItem == null) { return; } var codProgramas = pautaItem.Pauta.Items.Select(e => e.CodigoPrograma).ToList(); if (codProgramas.All(cp => PdmContext.Certificaciones.Any(e => e.CodigoPrograma == cp && e.Estado == EstadoCertificacion.Aceptada))) { pautaItem.Pauta.Estado = EstadoPauta.Cerrada; pautaItem.Pauta.FechaCierre = DateTime.Now; } if (pautaItem.Pauta.Campania.Pautas.All(e => e.Estado == EstadoPauta.Cerrada)) { pautaItem.Pauta.Campania.Estado = EstadoCampania.Cerrada; pautaItem.Pauta.Campania.FechaCierre = DateTime.Now; } }); //PdmContext.Configuration.AutoDetectChangesEnabled = false; PdmContext.SaveChanges(); //PdmContext.Configuration.AutoDetectChangesEnabled = true; //PdmContext = new PDMContext(); } catch (Exception ex) { LogSyncCertificacionesError(ex); LogSyncCertificacionesEnd(); throw; } LogSyncCertificacionesEnd(); }
public GsmRepository(PdmContext ctx, ILogger <GsmRepository> logger) { _ctx = ctx; _logger = logger; }
public AdminRepository(PdmContext ctx, ILogger <AdminRepository> logger) { _ctx = ctx; _logger = logger; }
public void SyncTablasBasicas(IList <PautaFcMedios> pautas) { #region Base var actualMedios = PdmContext.Medios.ToList(); var actualPlazas = PdmContext.Plazas.ToList(); var actualVehiculos = PdmContext.Vehiculos.ToList(); var serviceMedios = pautas.Select(e => new { Codigo = e.cod_medio, Descripcion = e.des_medio }).Distinct().ToList(); var servicePlazas = pautas.Select(e => new { Codigo = e.cod_plaza, Descripcion = e.des_plaza }).Distinct().ToList(); var serviceVehiculos = pautas.Select(e => new { Codigo = e.cod_vehiculo, Descripcion = e.des_vehiculo }).Distinct().ToList(); #region Medios serviceMedios.ForEach(t => { var medio = actualMedios.FirstOrDefault(e => e.Codigo == t.Codigo); if (medio == null) { medio = new Entities.Medio { Codigo = t.Codigo, Descripcion = t.Descripcion, Nombre = t.Descripcion, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true }; PdmContext.Medios.Add(medio); } else { medio.Descripcion = t.Descripcion; medio.UpdateDate = DateTime.Now; medio.UpdatedBy = App.ImportUser; } }); #endregion #region Plazas servicePlazas.ForEach(t => { var plaza = actualPlazas.FirstOrDefault(e => e.Codigo == t.Codigo); if (plaza == null) { plaza = new Entities.Plaza { Codigo = t.Codigo, Descripcion = t.Descripcion, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true }; PdmContext.Plazas.Add(plaza); } else { plaza.Descripcion = t.Descripcion; plaza.UpdateDate = DateTime.Now; plaza.UpdatedBy = App.ImportUser; } }); #endregion #region Vehiculos serviceVehiculos.ForEach(t => { var vehiculo = actualVehiculos.FirstOrDefault(e => e.Codigo == t.Codigo); if (vehiculo == null) { vehiculo = new Entities.Vehiculo { Codigo = t.Codigo, Descripcion = t.Descripcion, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true, Nombre = t.Descripcion }; PdmContext.Vehiculos.Add(vehiculo); } else { vehiculo.Nombre = t.Descripcion; vehiculo.Descripcion = t.Descripcion; vehiculo.UpdateDate = DateTime.Now; vehiculo.UpdatedBy = App.ImportUser; } }); #endregion #endregion PdmContext.Configuration.AutoDetectChangesEnabled = false; PdmContext.SaveChanges(); PdmContext.Configuration.AutoDetectChangesEnabled = true; PdmContext = new PDMContext(); }
public void SyncTablasBasicas() { var serviceSync = PdmContext.ServiceSyncs.FirstOrDefault(); if (serviceSync != null && !serviceSync.MustSync) { return; } if (serviceSync == null) { serviceSync = new ServiceSync { CreateDate = DateTime.Now, Enabled = true, CreatedBy = UsuarioLogged }; PdmContext.ServiceSyncs.Add(serviceSync); } serviceSync.LastBaseTablesSync = DateTime.Now; var tarifas = FCMediosClient.Get <IList <TarifaFcMedios> >(GetTarifasAction); #region Base var actualMedios = PdmContext.Medios.ToList(); var actualPlazas = PdmContext.Plazas.ToList(); var actualVehiculos = PdmContext.Vehiculos.ToList(); var serviceMedios = tarifas.Select(e => new { Codigo = e.cod_medio, Descripcion = e.des_medio }).Distinct().ToList(); var servicePlazas = tarifas.Select(e => new { Codigo = e.cod_plaza, Descripcion = e.des_plaza }).Distinct().ToList(); var serviceVehiculos = tarifas.Select(e => new { Codigo = e.cod_vehiculo, Descripcion = e.des_vehiculo }).Distinct().ToList(); #region Medios serviceMedios.ForEach(t => { var medio = actualMedios.FirstOrDefault(e => e.Codigo == t.Codigo); if (medio == null) { medio = new Entities.Medio { Codigo = t.Codigo, Descripcion = t.Descripcion, Nombre = t.Descripcion, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true }; PdmContext.Medios.Add(medio); } else { medio.Descripcion = t.Descripcion; medio.UpdateDate = DateTime.Now; medio.UpdatedBy = App.ImportUser; } }); #endregion #region Plazas servicePlazas.ForEach(t => { var plaza = actualPlazas.FirstOrDefault(e => e.Codigo == t.Codigo); if (plaza == null) { plaza = new Entities.Plaza { Codigo = t.Codigo, Descripcion = t.Descripcion, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true }; PdmContext.Plazas.Add(plaza); } else { plaza.Descripcion = t.Descripcion; plaza.UpdateDate = DateTime.Now; plaza.UpdatedBy = App.ImportUser; } }); #endregion #region Vehiculos serviceVehiculos.ForEach(t => { var vehiculo = actualVehiculos.FirstOrDefault(e => e.Codigo == t.Codigo); if (vehiculo == null) { vehiculo = new Entities.Vehiculo { Codigo = t.Codigo, Descripcion = t.Descripcion, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true, Nombre = t.Descripcion }; PdmContext.Vehiculos.Add(vehiculo); } else { vehiculo.Nombre = t.Descripcion; vehiculo.Descripcion = t.Descripcion; vehiculo.UpdateDate = DateTime.Now; vehiculo.UpdatedBy = App.ImportUser; } }); #endregion #endregion PdmContext.Configuration.AutoDetectChangesEnabled = false; PdmContext.SaveChanges(); PdmContext.Configuration.AutoDetectChangesEnabled = true; PdmContext = new PDMContext(); }
public void SyncCampanias() { LogSyncCampaniasInit(); try { var pautas = FCMediosClient.Get <IList <PautaFcMedios> >(GetPautas).ToList(); //GetPautasMock(); SyncTablasBasicas(pautas); var actualMedios = PdmContext.Medios.ToList(); var actualPlazas = PdmContext.Plazas.ToList(); var actualVehiculos = PdmContext.Vehiculos.ToList(); var campanias = pautas.Select(e => new { e.cod_campania, e.des_campania }).Distinct().ToList(); LogSyncCampaniasDetail(pautas); campanias.ForEach(c => { #region Campanias var campania = PdmContext.Campanias.FirstOrDefault(cc => cc.Codigo == c.cod_campania); var pautasWs = pautas.Where(e => string.Equals(e.cod_campania, c.cod_campania)).Select(e => e.nro_pauta).Distinct().ToList(); if (campania == null) { campania = new Entities.Campania { CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true, Estado = EstadoCampania.Pendiente, Nombre = c.des_campania, Codigo = c.cod_campania, Pautas = new List <Entities.Pauta>() }; PdmContext.Campanias.Add(campania); } else if (campania.Estado == EstadoCampania.Cerrada) { SyncEstadoPautas(pautasWs.Select(p => new Entities.Pauta { Codigo = p }).ToList(), 0, Resource.RechazoCampaniaCerrada); LogSyncCampaniasRechazoCampaniaCerrada(campania, pautasWs); return; } #endregion #region Pautas pautasWs.ForEach(pcodigo => { var pauta = campania.Pautas.SingleOrDefault(ee => string.Equals(ee.Codigo, pcodigo)); if (pauta == null) { pauta = new Entities.Pauta { CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true, Estado = EstadoPauta.Pendiente, Campania = campania, Codigo = pcodigo, Items = new List <Entities.PautaItem>() }; campania.Pautas.Add(pauta); } var items = pautas.Where(e => string.Equals(e.nro_pauta, pcodigo)).ToList(); items.ForEach(itemWs => { var item = pauta.Items.FirstOrDefault(e => string.Equals(e.CodigoPrograma, itemWs.cod_programa)); if (item == null) { item = new Entities.PautaItem { CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Enabled = true, Pauta = pauta, CodigoAviso = itemWs.cod_aviso, CodigoPrograma = itemWs.cod_programa }; pauta.Items.Add(item); } item.Tarifa = PdmContext.Tarifas.FirstOrDefault(e => e.CodigoPrograma == itemWs.cod_programa && e.Tarifario.Estado == EstadoTarifario.Aprobado); item.DiferenciaEnMontoTarifas = item.Tarifa != null && item.Tarifa.Importe != itemWs.costo_unitario; item.CostoUnitario = itemWs.costo_unitario; item.Descuento1 = itemWs.descuento_1; item.Descuento2 = itemWs.descuento_2; item.Descuento3 = itemWs.descuento_3; item.Descuento4 = itemWs.descuento_4; item.Descuento5 = itemWs.descuento_5; item.Rtg1 = itemWs.rtg_1; item.Rtg2 = itemWs.rtg_2; item.Rtg3 = itemWs.rtg_3; item.Cpr1 = itemWs.cpr_1; item.Cpr2 = itemWs.cpr_2; item.Cpr3 = itemWs.cpr_3; item.Tema = itemWs.des_tema; item.Proveedor = itemWs.des_proveedor; item.ProveedorCodigo = itemWs.cod_proveedor; item.DuracionTema = itemWs.duracion_tema; item.Producto = itemWs.des_producto; item.Espacio = itemWs.espacio; item.FechaAviso = itemWs.fecha_aviso; }); pauta.Estado = pauta.Items.Any(e => e.Tarifa == null) ? EstadoPauta.ProgramasNoTarifados : pauta.Items.Any(e => e.DiferenciaEnMontoTarifas) ? EstadoPauta.DiferenciaEnMontoTarifas : pauta.Estado; }); #endregion #region Inconsistencias campania.Estado = campania.Pautas.Any(e => e.Estado == EstadoPauta.ProgramasNoTarifados || e.Estado == EstadoPauta.DiferenciaEnMontoTarifas) ? EstadoCampania.InconsistenciasEnPautas : campania.Estado; if (campania.Estado == EstadoCampania.InconsistenciasEnPautas) { campania.Pautas.ForEach(p => { var sinTarifa = p.Items.Where(i => i.Tarifa == null).Select(i => i.CodigoPrograma).ToList(); var diferenteMonto = p.Items.Where(i => i.DiferenciaEnMontoTarifas).Select(i => i.CodigoPrograma).ToList(); if (!sinTarifa.Any() && !diferenteMonto.Any()) { return; } var motivo = sinTarifa.Any() ? string.Format(Resource.ProgramasNoTarifados, string.Join(",", sinTarifa)) : string.Format(Resource.DiferenciaEnMontoTarifas, string.Join(",", diferenteMonto)); LogSyncCampaniasRechazoInconsistencias(p, motivo); // SyncEstadoPautas(new List<Pauta> {p}, 0, motivo); sinTarifa.ForEach(st => { var tfc = pautas.First(t => t.cod_programa == st && string.Equals(t.nro_pauta, p.Codigo)); var medio = actualMedios.Single(e => e.Codigo == tfc.cod_medio); var plaza = actualPlazas.Single(e => e.Codigo == tfc.cod_plaza); var vehiculo = actualVehiculos.Single(e => e.Codigo == tfc.cod_vehiculo); var tarifario = PdmContext.Tarifarios.SingleOrDefault(tarif => tarif.Estado == EstadoTarifario.Aprobado && tarif.Vehiculo.Codigo == vehiculo.Codigo); if (tarifario == null) { return; } var tarifa = new Entities.Tarifa { CodigoPrograma = tfc.cod_programa, CreateDate = DateTime.Now, CreatedBy = App.ImportUser, Descripcion = tfc.espacio, Enabled = true, HoraDesde = tfc.hora_inicio, HoraHasta = tfc.hora_fin, Importe = tfc.costo_unitario, Plaza = plaza, Tarifario = tarifario, Vehiculo = vehiculo, Medio = medio, Nueva = true }; tarifario.Tarifas.Add(tarifa); }); }); } #endregion }); PdmContext.SaveChanges(); } catch (Exception ex) { LogSyncCampaniasError(ex); LogSyncCampaniasEnd(); throw; } LogSyncCampaniasEnd(); }
public override AprobacionSap Create(AprobacionSap dto) { try { LogSyncAprobacionesInit(); var entities = PdmContext.Certificaciones.Where(e => e.Estado == EstadoCertificacion.Aceptada) .GroupBy(e => new { e.ProveedorNombre, e.ProveedorCodigo, e.Campania }) .ToList() .Select(e => new Entities.AprobacionSap { Campania = e.Key.Campania, ProveedorCodigo = e.Key.ProveedorCodigo, ProveedorNombre = e.Key.ProveedorNombre, EstadoCertificacion = EstadoAprobacionSap.Ingresada, EstadoConsumo = EstadoAprobacionSap.Ingresada, EstadoProvision = EstadoAprobacionSap.Ingresada, MontoTotal = e.Sum(c => c.DuracionTema * c.CostoUnitario * 60), CreateDate = DateTime.Now, CreatedBy = UsuarioLogged }).ToList(); #region Create entities.ForEach(e => { PdmContext.AprobacionesSap.Add(e); }); PdmContext.SaveChanges(); LogSyncAprobacionesDetail(entities); entities.ForEach(aprobacion => { var certificaciones = PdmContext.Certificaciones.Where(c => c.Estado == EstadoCertificacion.Aceptada && c.Campania.Id == aprobacion.Campania.Id && c.ProveedorCodigo == aprobacion.ProveedorCodigo).ToList(); certificaciones.ForEach(e => { e.Estado = EstadoCertificacion.Aprobada; e.AprobacionSap = aprobacion; e.UpdateDate = DateTime.Now; e.UpdatedBy = UsuarioLogged; }); EFBatchOperation.For(PdmContext, PdmContext.Certificaciones).UpdateAll(certificaciones, x => x.ColumnsToUpdate( t => t.AprobacionSap, t => t.UpdateDate, t => t.UpdatedBy, t => t.Estado)); PdmContext.SaveChanges(); }); #endregion #region Send SAP _sapAdmin.CreateConsumo(entities); entities.ForEach(e => { e.EstadoConsumo = EstadoAprobacionSap.Enviada; }); PdmContext.SaveChanges(); _sapAdmin.CreateProvision(entities); entities.ForEach(e => { e.EstadoProvision = EstadoAprobacionSap.Enviada; }); PdmContext.SaveChanges(); _sapAdmin.CreateCertificacion(entities); entities.ForEach(e => { e.EstadoCertificacion = EstadoAprobacionSap.Enviada; }); PdmContext.SaveChanges(); #endregion LogSyncAprobacionesEnd(); } catch (Exception e) { LogSyncAProbacionesError(e); throw; } return(null); }