/// <summary> /// Ons the create. /// </summary> /// <param name="savedInstanceState">Saved instance state.</param> protected override async void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); //BroadcastProductosPendientes(); BroadcastProduct(); BroadcastPendientesNoFinalizados(); DataManager.FechaHoy = DateTime.Now.DayOfYear; SetContentView(Resource.Layout.main_activity); if (ValidationUtils.GetNetworkStatus()) { await GetLocationCompatAsync(); loading(); await PerfilarAsync(); AppCenter.Start(Constantes.KEY_APP_CENTER, typeof(Analytics), typeof(Crashes)); } else { Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(this); builder.SetTitle("Productos Refresh"); builder.SetIcon(Resource.Mipmap.ic_refresh); builder.SetCancelable(false); builder.SetMessage(" Estimado usuario, al iniciar productos refresh debes tener acceso a internet. Luego podrás ocupar la aplicación sin problemas incluso cuando no tengas conexión a la red.\n Debes tener en cuenta que si cierras las app, debes estar conectado a internet para abrirla nuevamente."); builder.SetPositiveButton("Aceptar", delegate { Cerrar.closeApplication(this); }); builder.Show(); AnalyticService.TrackAnalytics("Main Activity", new Dictionary <string, string> { { "Category", "Sin conexion a internet al iniciar la app" }, { "Action", "Validacion de conexion" } }); } }
/// <summary> /// Opens the maps. /// </summary> /// <param name="activeLocal">If set to <c>true</c> active local.</param> public void OpenMaps(bool activeLocal = false) { locMgr = GetSystemService(Context.LocationService) as LocationManager; if (locMgr.AllProviders.Contains(LocationManager.GpsProvider) && locMgr.IsProviderEnabled(LocationManager.GpsProvider)) { if (ActivityCompat.CheckSelfPermission(this, Android.Manifest.Permission.AccessFineLocation) == Permission.Granted && ActivityCompat.CheckSelfPermission(this, Android.Manifest.Permission.AccessCoarseLocation) == Permission.Granted) { OpenSucursal(activeLocal); } else { RequestPermissions( new String[] { Android.Manifest.Permission.AccessCoarseLocation, Android.Manifest.Permission.AccessFineLocation } , 0 ); OpenMaps(activeLocal); } } else { dialogWarning("Productos Refresh", "No hay acceso a gps. Por favor, habilitar.", "aceptar"); AnalyticService.TrackAnalytics("Main Activity", new Dictionary <string, string> { { "Category", "Sin acceso al gps" }, { "Action", "debe tener conexion a gps" } }); } }
/// <summary> /// Geolocalizacions the walmart. /// </summary> /// <param name="lat">Lat.</param> /// <param name="lon">Lon.</param> async void geolocalizacionWalmart(string lat, string lon) { DataManager.actualLatitud = lat; DataManager.actualLongitud = lon; var existeSucursalSeleccionada = DataManager.RealmInstance.All <SucursalTienda>(); if (!existeSucursalSeleccionada.Any()) { i = new Intent(this, typeof(UbicacionTiendaActivity)); StartActivity(i); AnalyticService.TrackAnalytics("Main Activity", new Dictionary <string, string> { { "Category", "App, no tiene sucursal asignada" }, { "Action", "redireccionado a mapa" } }); } else { i = new Intent(this, typeof(HomeAgregaProductoActivity)); StartActivity(i); AnalyticService.TrackAnalytics("Main Activity", new Dictionary <string, string> { { "Category", "App, si tiene sucursal asignada" }, { "Action", "redireccionado a home" } }); } }
/// <summary> /// Ons the create. /// </summary> /// <param name="savedInstanceState">Saved instance state.</param> protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); if (WindowManager.DefaultDisplay.Rotation == SurfaceOrientation.Rotation0 || WindowManager.DefaultDisplay.Rotation == SurfaceOrientation.Rotation180) { SetContentView(Resource.Layout.home_agrega_producto_activity); } else { SetContentView(Resource.Layout.home_agrega_producto_horizontal_activity); } imgIcProductoAgregado = FindViewById <ImageView>(Resource.Id.imgIcProductoAgregado); animationVisible = AnimationUtils.LoadAnimation(this, Resource.Animation.box_amination_visible); animationInvisible = AnimationUtils.LoadAnimation(this, Resource.Animation.box_amination_invisible); btnCerrar = FindViewById <Button>(Resource.Id.btnCerrar); btnVolver = FindViewById <ImageView>(Resource.Id.btnVolver); btnLogout = FindViewById <ImageButton>(Resource.Id.btnLogout); btnHomeAgregarProducto = FindViewById <ImageButton>(Resource.Id.btnHomeAgregarProducto); btnHomeProductoPendientes = FindViewById <ImageButton>(Resource.Id.btnHomeProductoPendientes); linearLayoutProductoAgregadoOK = FindViewById <LinearLayout>(Resource.Id.linearLayoutProductoAgregadoOK); linearLayoutBtnIrAMapasDeTienda = FindViewById <LinearLayout>(Resource.Id.linearLayoutBtnIrAMapasDeTienda); linearLayoutEtiquetaProductosNoEnviados = FindViewById <LinearLayout>(Resource.Id.linearLayoutEtiquetaProductosNoEnviados); lblNombreProducto = FindViewById <TextView>(Resource.Id.lblNombreProducto); lblCantidadProductosKg = FindViewById <TextView>(Resource.Id.lblCantidadProductoKg); lblNombreUsuarioToolbar = FindViewById <TextView>(Resource.Id.lblNombreUsuarioToolbar); lblMensajeCargaYContadorDeProductosPendientesACargar = FindViewById <TextView>(Resource.Id.lblMensajeCargaYContadorDeProductosPendientesACargar); lblNombreActivity = FindViewById <TextView>(Resource.Id.lblNombreActivity); lblNombreTienda = FindViewById <TextView>(Resource.Id.lblNombreTienda); lblTipoTienda = FindViewById <TextView>(Resource.Id.lblTipoTienda); linearLayoutBtnCambiarUser = FindViewById <LinearLayout>(Resource.Id.linearLayoutBtnCambiarUser); linearLayoutBtnCambiarUser.Click += LinearLayoutBtnCambiarUser_Click; lblNombreActivity.Text = "Productos Refresh"; btnVolver.Visibility = ViewStates.Invisible; btnHomeAgregarProducto.Click += BtnHomeAgregarProducto_Click; btnHomeProductoPendientes.Click += BtnHomeProductoPendientes_Click; btnCerrar.Click += BtnCerrar_Click; linearLayoutBtnIrAMapasDeTienda.Click += LinearLayoutBtnIrAMapasDeTienda_Click; string nombreSucursal = dataSucursal.FirstOrDefault().name.ToString(); string tipoSucursal = dataSucursal.FirstOrDefault().format.ToString(); lblNombreTienda.Text = nombreSucursal; lblTipoTienda.Text = tipoSucursal; fuente = new Fuente(this); fontRobotoRegular = fuente.fuenteRobotoRegular(); fontRobotoMedium = fuente.fuenteRobotoMedium(); tipografiasEnBotones(btnCerrar); tipografiasEnTextView(lblNombreProducto, lblCantidadProductosKg, lblMensajeCargaYContadorDeProductosPendientesACargar); ActivityContexts.homeAddActivity = this; linearLayoutEtiquetaProductosNoEnviados.Visibility = ViewStates.Invisible; if (string.IsNullOrEmpty(DataManager.nombreUsuario)) { IngresoUsuarioResponsableActivity.viewFormularioUser(this); } nombreUsuarioToolbar(); AnalyticService.TrackAnalytics("Home app", new Dictionary <string, string> { { "Category", "sucursal asignada " + nombreSucursal + ", " + tipoSucursal }, { "Action", "OnCreate" } }); }
/// <summary> /// Linears the layout button ir AM apas de tienda click. /// </summary> /// <param name="sender">Sender.</param> /// <param name="e">E.</param> void LinearLayoutBtnIrAMapasDeTienda_Click(object sender, EventArgs e) { Intent intentUbicacionTiendaActivity = new Intent(this, typeof(UbicacionTiendaActivity)); StartActivity(intentUbicacionTiendaActivity); DataManager.estadoVolverAlMapa = "1"; AnalyticService.TrackAnalytics("Home app", new Dictionary <string, string> { { "Category", "Boton ir a mapas" }, { "Action", "click BtnHomeAgregarProducto_Click" } }); }
/// <summary> /// Buttons the home agregar producto click. /// </summary> /// <param name="sender">Sender.</param> /// <param name="e">E.</param> void BtnHomeAgregarProducto_Click(object sender, EventArgs e) { /* Intent intentAgregarProductoActivity = new Intent(this, typeof(AgregarProductoActivity)); * StartActivity(intentAgregarProductoActivity);*/; GaleriaFragment galeriaFragment = new GaleriaFragment(); var transcation = SupportFragmentManager.BeginTransaction(); galeriaFragment.Show(transcation, galeriaFragment.Tag); galeriaFragment.Cancelable = false; Toast.MakeText(ApplicationContext, "Saca una foto a la etiqueta", ToastLength.Long).Show(); DataManager.estadoBusquedaProducto = string.Empty; DataManager.barra = string.Empty; DataManager.refreshItem = string.Empty; DataManager.refreshDepto = string.Empty; DataManager.refreshItemBalanza = string.Empty; DataManager.refreshNombreProducto = string.Empty; AnalyticService.TrackAnalytics("Home app", new Dictionary <string, string> { { "Category", "Boton agregar podructo ir a formulario de inngreso producto" }, { "Action", "click BtnHomeAgregarProducto_Click" } }); }
/// <summary> /// Ons the create. /// </summary> /// <param name="savedInstanceState">Saved instance state.</param> protected override async void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); BroadcastProduct(); DataManager.FechaHoy = DateTime.Now.DayOfYear; SetContentView(Resource.Layout.main_activity); if (ValidationUtils.GetNetworkStatus()) { try{ AppCenter.Start("c72dc3eb-e784-4e20-930f-5b4095f95ed0", typeof(Analytics), typeof(Crashes)); DataManager.appCenterActive = true; }catch { DataManager.appCenterActive = false; } await GetLocationCompatAsync(); loading(); await PerfilarAsync(); } else { Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(this); builder.SetTitle("Trazabilidad de carnes"); builder.SetIcon(Resource.Mipmap.ic_trazabilidad); builder.SetCancelable(false); builder.SetMessage(" Estimado usuario, al iniciar trazabilidad de carnes debes tener acceso a internet. Luego podrás ocupar la aplicación sin problemas incluso cuando no tengas conexión a la red.\n Debes tener en cuenta que si cierras las app, debes estar conectado a internet para abrirla nuevamente."); builder.SetPositiveButton("Aceptar", delegate { closeApplication(); }); builder.Show(); AnalyticService.TrackAnalytics("Main Activity", new Dictionary <string, string> { { "Category", "Sin conexion a internet al iniciar la app" }, { "Action", "Validacion de conexion" } }); } }
/// <summary> /// Dialogos the confirmacion agregar producto. /// </summary> /// <param name="activity">Activity.</param> /// <param name="item">Item.</param> /// <param name="itemNombreProducto">Item nombre producto.</param> /// <param name="txtCantidadDeUnidadesProducto">Text cantidad de unidades producto.</param> /// <param name="itemBalanza">Item balanza.</param> /// <param name="itemDpto">Item dpto.</param> /// <param name="fechaVencDesc">Fecha venc desc.</param> /// <param name="txtFechaDescongelacion">Text fecha descongelacion.</param> /// <param name="temperaturaIdeal">Temperatura ideal.</param> /// <param name="tiempo">Tiempo.</param> public static void dialogoConfirmacionAgregarProducto(Activity activity , IngresoItemRefreshRequest item , string itemNombreProducto , string txtCantidadDeUnidadesProducto , string itemBalanza , string itemDpto , string fechaVencDesc , string txtFechaDescongelacion , string temperaturaIdeal , string tiempo) { customDialog = new Dialog(activity, Resource.Style.Theme_Dialog_Translucent); customDialog.SetCancelable(false); customDialog.SetContentView(Resource.Layout.agregar_producto_confirmacion_dialogo); ImageView imgLoadingBtnAgregaPruductoConfirmacion = customDialog.FindViewById <ImageView>(Resource.Id.imgLoadingBtnAgregaPruductoConfirmacion); Glide.With(activity).Load(Resource.Drawable.cargando).Into(imgLoadingBtnAgregaPruductoConfirmacion); TextView lblBtnAgregarProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblBtnAgregarProductoConfirmacion); ImageView imgDanger = customDialog.FindViewById <ImageView>(Resource.Id.imgDanger); TextView lblNombreProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblNombreProductoConfirmacion); lblNombreProductoConfirmacion.Text = itemNombreProducto; TextView lblItemProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblItemProductoConfirmacion); lblItemProductoConfirmacion.Text = itemBalanza; TextView lblDepartamentoProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblDepartamentoProductoConfirmacion); lblDepartamentoProductoConfirmacion.Text = itemDpto; TextView lblFechaDescongelacionProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblFechaDescongelacionProductoConfirmacion); lblFechaDescongelacionProductoConfirmacion.Text = txtFechaDescongelacion; TextView lblFechaVencimientoDescongelacionProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblFechaVencimientoDescongelacionProductoConfirmacion); lblFechaVencimientoDescongelacionProductoConfirmacion.Text = fechaVencDesc; TextView lblCantidadDeUnidadesProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblCantidadDeUnidadesProductoConfirmacion); lblCantidadDeUnidadesProductoConfirmacion.Text = item.CantidadUnidades; TextView lblTemperaturaIdealProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblTemperaturaIdealProductoConfirmacion); lblTemperaturaIdealProductoConfirmacion.Text = temperaturaIdeal + " ºC"; TextView lblHintLoteProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblHintLoteProductoConfirmacion); TextView lblLoteProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblLoteProductoConfirmacion); TextView lblHintFechaElaboracionProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblHintFechaElaboracionProductoConfirmacion); TextView lblFechaElaboracionProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblFechaElaboracionProductoConfirmacion); TextView lblHintTemperaturaProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblHintTemperaturaProductoConfirmacion); TextView lblTemperaturaProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblTemperaturaProductoConfirmacion); TextView lblHintComentarioProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblHintComentarioProductoConfirmacion); TextView lblComentarioProductoConfirmacion = customDialog.FindViewById <TextView>(Resource.Id.lblComentarioProductoConfirmacion); LinearLayout llMensajeProductoExistente = customDialog.FindViewById <LinearLayout>(Resource.Id.llMensajeProductoExistente); if (string.IsNullOrEmpty(item.LoteProduccion)) { lblHintLoteProductoConfirmacion.Visibility = ViewStates.Gone; lblLoteProductoConfirmacion.Visibility = ViewStates.Gone; lblHintTemperaturaProductoConfirmacion.Visibility = ViewStates.Visible; lblTemperaturaProductoConfirmacion.Visibility = ViewStates.Visible; lblTemperaturaProductoConfirmacion.Text = item.Temperatura + " ºC"; lblHintComentarioProductoConfirmacion.Visibility = ViewStates.Visible; lblComentarioProductoConfirmacion.Visibility = ViewStates.Visible; lblComentarioProductoConfirmacion.Text = item.Comentario; lblHintFechaElaboracionProductoConfirmacion.Visibility = ViewStates.Visible; lblFechaElaboracionProductoConfirmacion.Visibility = ViewStates.Visible; lblFechaElaboracionProductoConfirmacion.Text = item.FechaElaboracion; } else { lblHintLoteProductoConfirmacion.Visibility = ViewStates.Visible; lblLoteProductoConfirmacion.Visibility = ViewStates.Visible; lblLoteProductoConfirmacion.Text = item.LoteProduccion; lblHintTemperaturaProductoConfirmacion.Visibility = ViewStates.Visible; lblTemperaturaProductoConfirmacion.Visibility = ViewStates.Visible; lblTemperaturaProductoConfirmacion.Text = item.Temperatura + " ºC"; lblHintComentarioProductoConfirmacion.Visibility = ViewStates.Visible; lblComentarioProductoConfirmacion.Visibility = ViewStates.Visible; lblComentarioProductoConfirmacion.Text = item.Comentario; lblHintFechaElaboracionProductoConfirmacion.Visibility = ViewStates.Gone; lblFechaElaboracionProductoConfirmacion.Visibility = ViewStates.Gone; } List <LoteParceladoProducto> existenProductosLoteParceladoExacto = DataManager.RealmInstance.All <LoteParceladoProducto>().Where(w => w.ItemPadre == item.ItemPadre && w.DayOfCharge == DataManager.FechaHoy && w.LoteProduccion == item.LoteProduccion && w.CantidadUnidades == item.CantidadUnidades && w.Comentario == item.Comentario).ToList(); List <LoteParceladoProducto> existenProductosLoteParcelado = DataManager.RealmInstance.All <LoteParceladoProducto>().Where(w => w.ItemPadre == item.ItemPadre && w.DayOfCharge == DataManager.FechaHoy && w.LoteProduccion == item.LoteProduccion && w.CantidadUnidades == item.CantidadUnidades).ToList(); List <LoteParceladoProducto> existenProductosLoteParceladoCompleta = DataManager.RealmInstance.All <LoteParceladoProducto>().Where(w => w.ItemPadre == item.ItemPadre && w.DayOfCharge == DataManager.FechaHoy).ToList(); List <ProductoRefreshPendiente> existenProductosPendientesLote = DataManager.RealmInstance.All <ProductoRefreshPendiente>().Where(w => w.ItemPadre == item.ItemPadre && w.DayOfCharge == DataManager.FechaHoy).ToList(); if (existenProductosLoteParcelado.Any()) { llMensajeProductoExistente.Visibility = ViewStates.Visible; } else { llMensajeProductoExistente.Visibility = ViewStates.Gone; } //if (!item.Temperatura.Equals(temperaturaIdeal)) if (Convert.ToDecimal(item.Temperatura, CultureInfo.InvariantCulture) <= Convert.ToDecimal(temperaturaIdeal, CultureInfo.InvariantCulture) && !item.Temperatura.Equals(temperaturaIdeal)) { lblHintTemperaturaProductoConfirmacion.SetTextColor(Android.Support.V4.Content.ContextCompat.GetColorStateList(activity.ApplicationContext, Resource.Color.colorRed)); lblTemperaturaProductoConfirmacion.SetTextColor(Android.Support.V4.Content.ContextCompat.GetColorStateList(activity.ApplicationContext, Resource.Color.colorRed)); imgDanger.Visibility = ViewStates.Visible; } else { lblHintTemperaturaProductoConfirmacion.SetTextColor(Android.Support.V4.Content.ContextCompat.GetColorStateList(activity.ApplicationContext, Resource.Color.gris)); lblTemperaturaProductoConfirmacion.SetTextColor(Android.Support.V4.Content.ContextCompat.GetColorStateList(activity.ApplicationContext, Resource.Color.gris)); imgDanger.Visibility = ViewStates.Gone; } Button btnCancelarProductoConfirmacion = customDialog.FindViewById <Button>(Resource.Id.btnCancelarProductoConfirmacion); btnCancelarProductoConfirmacion.Click += delegate { customDialog.Dismiss(); }; LinearLayout llBtnAgregarProductoConfirmacion = customDialog.FindViewById <LinearLayout>(Resource.Id.llBtnAgregarProductoConfirmacion); Button btnEsUnNuevoProducto = customDialog.FindViewById <Button>(Resource.Id.btnEsUnNuevoProducto); Button btnEsElMismoProducto = customDialog.FindViewById <Button>(Resource.Id.btnEsElMismoProducto); if (!existenProductosLoteParcelado.Any()) { llBtnAgregarProductoConfirmacion.Visibility = ViewStates.Visible; btnEsUnNuevoProducto.Visibility = ViewStates.Gone; btnEsElMismoProducto.Visibility = ViewStates.Gone; } else { llBtnAgregarProductoConfirmacion.Visibility = ViewStates.Gone; btnEsUnNuevoProducto.Visibility = ViewStates.Visible; btnEsElMismoProducto.Visibility = ViewStates.Visible; } llBtnAgregarProductoConfirmacion.Click += async delegate { llBtnAgregarProductoConfirmacion.Clickable = false; llBtnAgregarProductoConfirmacion.Enabled = false; imgLoadingBtnAgregaPruductoConfirmacion.Visibility = ViewStates.Visible; lblBtnAgregarProductoConfirmacion.Visibility = ViewStates.Gone; if (item.FechaElaboracion.Contains("/")) { DateTime dt = DateTime.ParseExact(item.FechaElaboracion, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture); var fechaElabService = String.Format("{0:yyyyMMdd}", dt); item.FechaElaboracion = fechaElabService; } if (!string.IsNullOrEmpty(item.LoteProduccion)) { if (string.IsNullOrEmpty(DataManager.correlativo.ToString()) || DataManager.correlativo == 0) { if (existenProductosLoteParceladoCompleta.Count >= 1) { item.Correlativo = int.Parse(existenProductosLoteParceladoCompleta.LastOrDefault().Correlativo) + 1; } else { item.Correlativo = 1; } } else { item.Correlativo = DataManager.correlativo; } } string postData = JsonConvert.SerializeObject(item); var itemInventario = await ServiceDelegate.Instance.IngresoItemRefreshImg(JObject.Parse(postData)); if (itemInventario.Success) { imgLoadingBtnAgregaPruductoConfirmacion.Visibility = ViewStates.Gone; lblBtnAgregarProductoConfirmacion.Visibility = ViewStates.Visible; DataManager.estadoProductoAgregado = true; DataManager.nombreProductoAgregado = itemNombreProducto; DataManager.cantidadUnidadesProductoAgregado = "ha sido agregado por " + txtCantidadDeUnidadesProducto + " unidades"; DataManager.fechaDescongelacionManager = string.Empty; DataManager.fechaElaboracionManager = string.Empty; Intent intentAlHomeAgregaProductoActivity = new Intent(activity, typeof(HomeAgregaProductoActivity)); activity.StartActivity(intentAlHomeAgregaProductoActivity); DataManager.estadoBusquedaProducto = string.Empty; AnalyticService.TrackAnalytics("Agregar producto app", new Dictionary <string, string> { { "Category", "Codigo retorno success true" }, { "Action", "producto " + DataManager.refreshNombreProducto + DataManager.cantidadUnidadesProductoAgregado + ". En el servicio" } }); } else { DataManager.RealmInstance.Write(() => { DataManager.RealmInstance.Add(item); }); imgLoadingBtnAgregaPruductoConfirmacion.Visibility = ViewStates.Gone; lblBtnAgregarProductoConfirmacion.Visibility = ViewStates.Visible; DataManager.estadoProductoAgregado = false; DataManager.fechaDescongelacionManager = string.Empty; DataManager.fechaElaboracionManager = string.Empty; Intent intentAlHomeAgregaProductoActivity = new Intent(activity, typeof(HomeAgregaProductoActivity)); activity.StartActivity(intentAlHomeAgregaProductoActivity); DataManager.estadoBusquedaProducto = string.Empty; AnalyticService.TrackAnalytics("Agregar producto app", new Dictionary <string, string> { { "Category", "Codigo retorno success true" }, { "Action", "producto " + DataManager.refreshNombreProducto + DataManager.cantidadUnidadesProductoAgregado + ". En el bd local" } }); } if (!string.IsNullOrEmpty(item.LoteProduccion)) { if (string.IsNullOrEmpty(DataManager.correlativo.ToString()) || DataManager.correlativo == 0) { if (existenProductosLoteParceladoCompleta.Count >= 1) { item.Correlativo = int.Parse(existenProductosLoteParceladoCompleta.LastOrDefault().Correlativo) + 1; } else { item.Correlativo = 1; } } else { item.Correlativo = DataManager.correlativo; } } //*---Validar si temperatura ingresada es igual a la temperatura ideal //* ---de no cumplirse, se debe agregar a la bd local de productos pendientes //if (!item.Temperatura.Equals(temperaturaIdeal)) if (Convert.ToDecimal(item.Temperatura, CultureInfo.InvariantCulture) <= Convert.ToDecimal(temperaturaIdeal, CultureInfo.InvariantCulture) && !item.Temperatura.Equals(temperaturaIdeal)) { string hora = item.HoraCreacion; string a = hora.Insert(2, ":"); string horaCrea = a.Insert(5, ":"); string tiempoHrsRestante = calcularTiempo(horaCrea, tiempo); string tiempoRestanteProd = tiempoHrsRestante.Substring(0, 5); //DataManager.cantidadUnidadesProductoAgregado = "quedó registrado pero deberá esperar aproximadamente hasta las " + tiempoRestanteProd + " horas, Para que llegue a su temperatura ideal de " + temperaturaIdeal + " ºC"; DataManager.cantidadUnidadesProductoAgregado = "quedó registrado pero deberá esperar que alcance la Tº ideal, Por favor revise su procedimiento refresh."; ProductoRefreshPendiente p1 = new ProductoRefreshPendiente(); p1.ItemPadre = item.ItemPadre; p1.FechaElaboracion = item.FechaElaboracion; p1.LoteProduccion = item.LoteProduccion; p1.FechaDescongelado = item.FechaDescongelado; p1.IdParametro = item.IdParametro; p1.Temperatura = item.Temperatura; p1.EtiquetaPropia = item.EtiquetaPropia; p1.UsuarioCreacion = item.UsuarioCreacion; p1.FechaCreacion = item.FechaCreacion; p1.HoraCreacion = item.HoraCreacion; p1.Comentario = item.Comentario; p1.CantidadUnidades = item.CantidadUnidades; p1.Imagen = item.Imagen; p1.NombreProducto = itemNombreProducto; p1.TiempoRestante = tiempoRestanteProd; p1.NombreDpto = itemDpto; p1.FechaVencimiento = fechaVencDesc; p1.EstadoAlertaNotificacion = false; p1.DayOfCharge = DateTime.Now.DayOfYear; p1.Correlativo = item.Correlativo; List <ProductoRefreshPendiente> lll = new List <ProductoRefreshPendiente>(); List <LoteParceladoProducto> lp = new List <LoteParceladoProducto>(); var p1Json = JsonConvert.SerializeObject(p1); LoteParceladoProducto prodAddLote = JsonConvert.DeserializeObject <LoteParceladoProducto>(p1Json); lp.Add(prodAddLote); lll.Add(p1); var dataPendientes = DataManager.RealmInstance.All <ProductoRefreshPendiente>(); var existenProductosPendientes = DataManager.RealmInstance.All <ProductoRefreshPendiente>().Where(x => x.ItemPadre == p1.ItemPadre); if (!string.IsNullOrEmpty(item.LoteProduccion)) { DataManager.RealmInstance.Write(() => { foreach (LoteParceladoProducto pLp in lp) { DataManager.RealmInstance.Add(pLp); } }); } if (existenProductosPendientes.Any()) { if (DataManager.isProductoNuevo) { DataManager.RealmInstance.Write(() => { foreach (ProductoRefreshPendiente prp in lll) { DataManager.RealmInstance.Add(prp); } }); } else { var ppendientes = existenProductosPendientes.Where(x => x.Correlativo == p1.Correlativo && x.ItemPadre == p1.ItemPadre); if (ppendientes != null) { using (var transitemref = DataManager.RealmInstance.BeginWrite()) { DataManager.RealmInstance.RemoveRange <ProductoRefreshPendiente>(ppendientes); transitemref.Commit(); } DataManager.RealmInstance.Write(() => { foreach (ProductoRefreshPendiente prp in lll) { DataManager.RealmInstance.Add(prp); } }); } else { DataManager.RealmInstance.Write(() => { foreach (ProductoRefreshPendiente prp in lll) { DataManager.RealmInstance.Add(prp); } }); } } } else { DataManager.RealmInstance.Write(() => { foreach (ProductoRefreshPendiente prp in lll) { DataManager.RealmInstance.Add(prp); } }); } } else { var existenProductosPendientes = DataManager.RealmInstance.All <ProductoRefreshPendiente>().Where(x => x.ItemPadre == item.ItemPadre); if (existenProductosPendientes.ToList().Any()) { var productoConsulta = existenProductosLoteParceladoExacto.LastOrDefault(); var pendienteEliminar = DataManager.RealmInstance.All <ProductoRefreshPendiente>().Where(x => x.ItemPadre == productoConsulta.ItemPadre && x.CantidadUnidades == productoConsulta.CantidadUnidades && x.Comentario == productoConsulta.Comentario && x.DayOfCharge == productoConsulta.DayOfCharge && x.EtiquetaPropia == productoConsulta.EtiquetaPropia && x.FechaCreacion == productoConsulta.FechaCreacion && x.FechaVencimiento == productoConsulta.FechaVencimiento && x.LoteProduccion == productoConsulta.LoteProduccion && x.NombreDpto == productoConsulta.NombreDpto && x.NombreProducto == productoConsulta.NombreProducto).LastOrDefault(); if (!string.IsNullOrEmpty(item.LoteProduccion)) { var listaExistenProductosPendientesLoteParcelado = DataManager.RealmInstance.All <ProductoRefreshPendiente>().ToList(); var existenProductosPendientesLoteParcelado = DataManager.RealmInstance.All <ProductoRefreshPendiente>().Where(x => x.ItemPadre == item.ItemPadre && x.Correlativo == pendienteEliminar.Correlativo); using (var transitemref = DataManager.RealmInstance.BeginWrite()) { DataManager.RealmInstance.RemoveRange <ProductoRefreshPendiente>(existenProductosPendientesLoteParcelado); transitemref.Commit(); } } else { var existenProductosPendientesFechaElaboracion = DataManager.RealmInstance.All <ProductoRefreshPendiente>().Where(x => x.ItemPadre == item.ItemPadre && x.FechaElaboracion == item.FechaElaboracion); using (var transitemref = DataManager.RealmInstance.BeginWrite()) { DataManager.RealmInstance.RemoveRange <ProductoRefreshPendiente>(existenProductosPendientesFechaElaboracion); transitemref.Commit(); } } GC.Collect(); } } }; btnEsElMismoProducto.Click += delegate { try { DataManager.isProductoNuevo = false; DataManager.correlativo = int.Parse(existenProductosLoteParceladoExacto.LastOrDefault().Correlativo); llBtnAgregarProductoConfirmacion.Visibility = ViewStates.Visible; btnEsUnNuevoProducto.Visibility = ViewStates.Gone; btnEsElMismoProducto.Visibility = ViewStates.Gone; } catch (System.NullReferenceException ex) { Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(activity); builder.SetTitle("Productos Refresh"); builder.SetIcon(Resource.Mipmap.ic_refresh); builder.SetCancelable(false); builder.SetMessage("El producto no es el mismo, Por favor corrobora que la información de los campos se la misma (Ítem, Cantidad de unidades, Lote, Comentario)"); builder.SetPositiveButton("Aceptar", delegate { customDialog.Dismiss(); }); builder.Show(); } }; btnEsUnNuevoProducto.Click += delegate { DataManager.isProductoNuevo = true; DataManager.correlativo = int.Parse(existenProductosLoteParceladoCompleta.LastOrDefault().Correlativo) + 1; llBtnAgregarProductoConfirmacion.Visibility = ViewStates.Visible; btnEsUnNuevoProducto.Visibility = ViewStates.Gone; btnEsElMismoProducto.Visibility = ViewStates.Gone; }; customDialog.Window.SetStatusBarColor(Android.Graphics.Color.Transparent); customDialog.Show(); }
/// <summary> /// Views the formulario user. /// </summary> /// <param name="activity">Activity.</param> public static void viewFormularioUser(Activity activity) { customDialog = new Dialog(activity, Resource.Style.Theme_Dialog_Translucent); var ha = (HomeAgregaProductoActivity)activity; customDialog.SetCancelable(false); customDialog.SetContentView(Resource.Layout.ingreso_usuarioresponsable_dialog); EditText txtNombreUsuario = customDialog.FindViewById <EditText>(Resource.Id.txtUser); TextView lblMensajeError = customDialog.FindViewById <TextView>(Resource.Id.lblMensajeError); TextView lblBtnIngresarUser = customDialog.FindViewById <TextView>(Resource.Id.lblBtnIngresarUser); LinearLayout llBtnIngresarUser = customDialog.FindViewById <LinearLayout>(Resource.Id.llBtnIngresarUser); if (!string.IsNullOrEmpty(DataManager.nombreUsuario)) { txtNombreUsuario.Text = DataManager.nombreUsuario; llBtnIngresarUser.Enabled = true; llBtnIngresarUser.SetBackgroundResource(Resource.Drawable.cssBotonAgregarProducto); } else { txtNombreUsuario.Text = string.Empty; llBtnIngresarUser.Enabled = false; llBtnIngresarUser.SetBackgroundResource(Resource.Drawable.cssBotonBloqueado); } txtNombreUsuario.TextChanged += delegate { if (txtNombreUsuario.Text.Trim().Length >= 5 || txtNombreUsuario.Text.Trim().Length == 0) { lblMensajeError.Text = string.Empty; } if (!string.IsNullOrEmpty(txtNombreUsuario.Text)) { llBtnIngresarUser.Enabled = true; llBtnIngresarUser.SetBackgroundResource(Resource.Drawable.cssBotonAgregarProducto); } else { llBtnIngresarUser.Enabled = false; llBtnIngresarUser.SetBackgroundResource(Resource.Drawable.cssBotonBloqueado); } }; llBtnIngresarUser.Click += delegate { if (txtNombreUsuario.Text.Trim().Length >= 5) { DataManager.nombreUsuario = txtNombreUsuario.Text.Trim(); ha.nombreUsuarioToolbar(); customDialog.Dismiss(); AnalyticService.TrackAnalytics("Ingreso Usuario", new Dictionary <string, string> { { "Category", "Usuario " + DataManager.nombreUsuario + " agregado, el dia " + DateTime.Now }, { "Action", "click llBtnIngresarUser" } }); } else { lblMensajeError.Text = "Error al ingresar los datos"; AnalyticService.TrackAnalytics("Error ngreso Usuario", new Dictionary <string, string> { { "Category", "Usuario " + txtNombreUsuario.Text + " agregado, el dia " + DateTime.Now }, { "Action", "click llBtnIngresarUser" } }); } }; txtNombreUsuario.ImeOptions = ImeAction.Done; customDialog.Window.SetStatusBarColor(Android.Graphics.Color.Transparent); customDialog.Show(); }
/// <summary> /// Buttons the agregar producto click. /// </summary> /// <param name="sender">Sender.</param> /// <param name="e">E.</param> private async void BtnAgregarProducto_Click(object sender, EventArgs e) { try { estadoBloqueado(false); imgLoadingBtnAgregaPruducto.Visibility = ViewStates.Visible; lblBtnAgregarProducto.Visibility = ViewStates.Gone; if (!spiItemsProductos.SelectedItem.ToString().Equals("Item") && !spiProcedenciaProducto.SelectedItem.ToString().Equals("Procedencia") && !spiFrigorificoProducto.SelectedItem.ToString().Equals("Frigorifico") && !string.IsNullOrEmpty(txtFechaFaenaProducto.Text) && !string.IsNullOrEmpty(txtPesoNetoProducto.Text) && txtPesoNetoProducto.Text != "." && Convert.ToDouble(txtPesoNetoProducto.Text) > 0) { if (Convert.ToDecimal(txtPesoNetoProducto.Text, CultureInfo.InvariantCulture) <= 100) { var pesoKG = txtPesoNetoProducto.Text.Replace(",", ".").Trim(); var nombreFrigorifico = spiFrigorificoProducto.SelectedItem.ToString(); var nombreProcedencia = spiProcedenciaProducto.SelectedItem.ToString(); var nombreProducto = spiItemsProductos.SelectedItem.ToString().Trim(); var nombreProductoClean = nombreProducto.Split('-')[1].Trim(); var codItem = nombreProducto.Split('-')[0].Trim(); var procedenciaOrigen = dataProcedencia.Where(x => x.NombreProcedencia == nombreProcedencia).FirstOrDefault().CodigoProcedencia; var codFrigorifico = dataFrigorifico.Where(x => x.NombreFrigorifico == nombreFrigorifico).FirstOrDefault().CodigoFrigorifico; var fechaLectura = String.Format("{0:yyyyMMdd HH:mm:ss}", DateTime.Now); var fechaInventario = String.Format("{0:yyyyMMdd}", DateTime.Now); var pesoNetoConvert = Convert.ToInt32(Convert.ToDecimal(pesoKG, CultureInfo.InvariantCulture) * 100); if (DataManager.imageData != null) { Bitmap newImg = MediaStore.Images.Media.GetBitmap(ContentResolver, DataManager.imageData); var streamImg = new MemoryStream(); newImg.Compress(Bitmap.CompressFormat.Jpeg, 30, streamImg); //calidad al 30% bitmapData = streamImg.ToArray(); encodeImage = Convert.ToBase64String(bitmapData); // Base64.EncodeToString(bitmapData, Base64.Default); compressImage = CompressImageString.CompressString(encodeImage); } byte[] imagen = bitmapData; IngresaProcesaBarrasTabletRequest item = new IngresaProcesaBarrasTabletRequest { Item = codItem, Local = idSucursal, Procedencia = procedenciaOrigen, OrigenFrigorifico = codFrigorifico, CertificadoEmbarque = Constantes.ITEM_CERTIFICADO_EMBARQUE, FechaFaena = fechaFaena, PesaNeto = pesoNetoConvert.ToString(), PesaBruto = Constantes.PESO_BRUTO, Responsable = DataManager.nombreUsuario, Image = imagen }; string postData = JsonConvert.SerializeObject(item); var itemInventario = await ServiceDelegate.Instance.IngresoItemImage(JObject.Parse(postData)); if (itemInventario.Success) { try { var codResponse = (int)itemInventario.Response; if (codResponse == 2) { imgLoadingBtnAgregaPruducto.Visibility = ViewStates.Gone; lblBtnAgregarProducto.Visibility = ViewStates.Visible; Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(this); builder.SetTitle("Trazabilidad de carnes"); builder.SetIcon(Resource.Mipmap.ic_trazabilidad); builder.SetCancelable(false); builder.SetMessage("No existe item padre, para " + item.Item + " - " + nombreProductoClean); builder.SetPositiveButton("Aceptar", delegate { Intent intentAlHomeAgregaProductoActivity = new Intent(this, typeof(HomeAgregaProductoActivity)); StartActivity(intentAlHomeAgregaProductoActivity); }); builder.Show(); DataManager.estadoBusquedaProducto = string.Empty; AnalyticService.TrackAnalytics("Agregar producto app", new Dictionary <string, string> { { "Category", "Codigo retorno success false" }, { "Action", "codigo 500 no se ingresa producto ya que no existe item padre para item " + item.Item + " con codigo balanza " + txtCodigoBlanza.Text } }); } else { imgLoadingBtnAgregaPruducto.Visibility = ViewStates.Gone; lblBtnAgregarProducto.Visibility = ViewStates.Visible; DataManager.estadoProductoAgregado = true; DataManager.nombreProductoAgregado = nombreProductoClean; DataManager.kgProductoAgregado = pesoKG; Intent intentAlHomeAgregaProductoActivity = new Intent(this, typeof(HomeAgregaProductoActivity)); StartActivity(intentAlHomeAgregaProductoActivity); DataManager.estadoBusquedaProducto = string.Empty; AnalyticService.TrackAnalytics("Agregar producto app", new Dictionary <string, string> { { "Category", "Codigo retorno success true" }, { "Action", "producto " + nombreProducto + " agregado, con " + pesoNetoConvert + "kilos. En el servicio" } }); } } catch (Exception ex) { Log.Info("BtnAgregarProducto_Click", ex.Message); imgLoadingBtnAgregaPruducto.Visibility = ViewStates.Gone; lblBtnAgregarProducto.Visibility = ViewStates.Visible; DataManager.estadoProductoAgregado = true; DataManager.nombreProductoAgregado = nombreProductoClean; DataManager.kgProductoAgregado = pesoKG; Intent intentAlHomeAgregaProductoActivity = new Intent(this, typeof(HomeAgregaProductoActivity)); StartActivity(intentAlHomeAgregaProductoActivity); DataManager.estadoBusquedaProducto = string.Empty; AnalyticService.TrackAnalytics("Agregar producto app", new Dictionary <string, string> { { "Category", "Codigo retorno success true" }, { "Action", "producto " + nombreProducto + " agregado, con " + pesoNetoConvert + "kilos. En el servicio" } }); } } else { DataManager.RealmInstance.Write(() => { DataManager.RealmInstance.Add(item); }); imgLoadingBtnAgregaPruducto.Visibility = ViewStates.Gone; lblBtnAgregarProducto.Visibility = ViewStates.Visible; DataManager.estadoProductoAgregado = false; Intent intentAlHomeAgregaProductoActivity = new Intent(this, typeof(HomeAgregaProductoActivity)); StartActivity(intentAlHomeAgregaProductoActivity); DataManager.estadoBusquedaProducto = string.Empty; AnalyticService.TrackAnalytics("Agregar producto app", new Dictionary <string, string> { { "Category", "Codigo retorno success true" }, { "Action", "producto " + nombreProductoClean + " agregado, con " + pesoKG + "kilos. En el bd local" } }); } } else { imgLoadingBtnAgregaPruducto.Visibility = ViewStates.Gone; lblBtnAgregarProducto.Visibility = ViewStates.Visible; Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(this); builder.SetTitle("Trazabilidad de carnes"); builder.SetCancelable(false); builder.SetIcon(Resource.Mipmap.ic_trazabilidad); builder.SetMessage("El peso neto del producto, debe ser menor o igual a 100 kg"); builder.SetPositiveButton("Aceptar", delegate { estadoBloqueado(true); }); builder.Show(); } } else { imgLoadingBtnAgregaPruducto.Visibility = ViewStates.Gone; lblBtnAgregarProducto.Visibility = ViewStates.Visible; Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(this); builder.SetTitle("Trazabilidad de carnes"); builder.SetCancelable(false); builder.SetIcon(Resource.Mipmap.ic_trazabilidad); builder.SetMessage("Debes ingresar la información requerida en todos los campos"); builder.SetPositiveButton("Aceptar", delegate { estadoBloqueado(true); }); builder.Show(); } } catch (Exception ex) { Crashes.TrackError(ex); } }