protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.formdinamico);
            var modelForm = new FormDinamicoModel()
            {
                Db        = new FormDinamicoDA(SQLite_Android.DB.dataBase),
                IdVisita  = Intent.GetStringExtra("idVisita"),
                IdProduto = Intent.GetStringExtra("idProduto")
            };

            controller = new FormDinamicoCon(Intent.GetStringExtra("idVisita"),
                                             Intent.GetStringExtra("idProduto"), false, modelForm);

            uiform = new UIFormDinamico(this, FindViewById <LinearLayout>(Resource.Id.formulario), controller);
            model  = new GenericActivityModel
            {
                dbGenericActivity = new GenericActDA(SQLite_Android.DB.dataBase)
            };
            camera = new Camera(BaseContext);
            lastTagFotoSelected     = null;
            isDoneForm              = false;
            model.myToolbar         = modelActivity.myToolbar;
            model.gps               = modelActivity.gps;
            model.dialog            = modelActivity.dialog;
            model.dbGenericActivity = modelActivity.dbGenericActivity;
            isToRunning             = false;
        }
 public UIFormDinamico(FormDinamico context, LinearLayout layout,
                       FormDinamicoCon controller)
 {
     try
     {
         this.context    = context;
         this.layout     = layout;
         this.Controller = controller;
         model           = controller.Model;
         IniForms();
     }
     catch (NullReferenceException)
     {
         throw new NullReferenceException("Referencias do UIFormDinamico null");
     }
 }
        public void SendForms(TB_USUARIO userInfo)
        {
            var pdvsWithFormToSend = model.db.GetIDLojasToSend(userInfo.ID);
            var modelForm          = new FormDinamicoModel()
            {
                Db = new FormDinamicoDA(model.db.database)
            };

            foreach (var pdv in pdvsWithFormToSend)
            {
                string objSerializado = "";
                var    formsToSend    = model.db.GetFormToSend(userInfo.ID, pdv.ID);
                var    formController = new FormsRestCon(formsToSend, modelForm);
                var    currentPDV     = model.db.GetPdvInfo(pdv);
                objSerializado = formController.SerializeObject(formsToSend, currentPDV);
                PutRest("api/mobile/visitas/" + pdv.ID, objSerializado, userInfo, 3);
                formsToSend = model.db.GetFormToSend(userInfo.ID, pdv.ID);
                model.db.UpdateFormToSended(formsToSend);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            var modelForm = new FormDinamicoModel()
            {
                Db        = new FormDinamicoDA(Sqlite_IOS.DB.dataBase),
                IdVisita  = IdPdv,
                IdProduto = IdProduto
            };

            controllerPCL = new FormDinamicoCon(IdPdv, IdProduto, false, modelForm);
            formDinamico  = new UIFormDinamico(controllerPCL, this, scrollViewFormDinamico);
            formDinamico.IniForm();

            backButton.TouchDown += (sender, e) =>
            {
                SaveForm();
            };

            gestureSaveForm.AddTarget((obj) => SaveForm());

            tabBarFormDinamico.ItemSelected += delegate
            {
                if (tabBarFormDinamico.SelectedItem.Title == tabFoto.Title)
                {
                    var actionSheetAlert = UIAlertController.Create("Tipo de foto", "Selecione a categoria da foto desejada", UIAlertControllerStyle.ActionSheet);
                    var fotos            = controllerPCL.GetTagsFoto();

                    foreach (string itemType in fotos)
                    {
                        actionSheetAlert.AddAction(UIAlertAction.Create(itemType, UIAlertActionStyle.Default, (action) => { TakePhoto(itemType); }));
                    }
                    actionSheetAlert.AddAction(UIAlertAction.Create("Outros", UIAlertActionStyle.Default, (action) => { TakePhoto("Outros"); }));
                    actionSheetAlert.AddAction(UIAlertAction.Create("Cancelar", UIAlertActionStyle.Cancel, (action) => { }));
                    var presentationPopover = actionSheetAlert.PopoverPresentationController;
                    if (presentationPopover != null)
                    {
                        presentationPopover.SourceView = View;
                        presentationPopover.PermittedArrowDirections = UIPopoverArrowDirection.Up;
                    }
                    actionSheetAlert.View.TintColor = UIColor.Black;
                    PresentViewController(actionSheetAlert, true, null);
                }
                else if (tabBarFormDinamico.SelectedItem.Title == tabConcluir.Title)
                {
                    var alert = UIAlertController.Create("Concluir", "Gostaria de concluir a tarefa ?", UIAlertControllerStyle.Alert);
                    alert.AddAction(UIAlertAction.Create("Nao", UIAlertActionStyle.Cancel, (actionCancel) =>
                    {
                        MetricsManager.TrackEvent("CancelConcluirTarefa");
                    }));
                    alert.AddAction(UIAlertAction.Create("Sim", UIAlertActionStyle.Default, (actionOK) =>
                    {
                        if (formDinamico.HasInvalidateFields())
                        {
                            var alertError = UIAlertController.Create("Existem campos obrigatorios ainda nao informados.", null, UIAlertControllerStyle.Alert);
                            alertError.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Cancel, (actionCancel) => { }));
                            alertError.View.TintColor = UIColor.FromRGB(10, 88, 90);
                            PresentViewController(alertError, true, null);
                        }
                        else
                        {
                            var gps = LocationHelper.UpdateLocation();
                            if (gps == null)
                            {
                                var alertGps = UIAlertController.Create("GPS Desativado",
                                                                        "Ligue o GPS ou tire do modo aviao para continuar utilizando o sistema", UIAlertControllerStyle.Alert);
                                alertGps.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, (defaults) => { }));
                                alertGps.View.TintColor = UIColor.FromRGB(10, 88, 90);
                                PresentViewController(alertGps, true, null);
                            }
                            else
                            {
                                var batery = ((int)(UIDevice.CurrentDevice.BatteryLevel * 100F));
                                if (gps.Location != null)
                                {
                                    controllerPCL.SetFormToTable(gps.Location.Coordinate.Latitude,
                                                                 gps.Location.Coordinate.Longitude,
                                                                 StatusAPI.CONCLUIDO, batery);
                                }
                                else
                                {
                                    controllerPCL.SetFormToTable(LocationHelper.LastLocation.Coordinate.Latitude,
                                                                 LocationHelper.LastLocation.Coordinate.Longitude,
                                                                 StatusAPI.CONCLUIDO, batery);
                                }
#if !DEBUG
                                HockeyApp.MetricsManager.TrackEvent("FormConcluido");
#endif
                                DismissViewController(true, null);
                            }
                        }
                    }));
                    alert.View.TintColor = UIColor.FromRGB(10, 88, 90);
                    PresentViewController(alert, true, null);
                }
            };


            var g = new UITapGestureRecognizer(() => View.EndEditing(true))
            {
                CancelsTouchesInView = false
            };
            scrollViewFormDinamico.AddGestureRecognizer(g);
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            model = new MenuTarefasModel();
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.menu_tarefas);
            model.camera            = new Camera(ApplicationContext);
            model.myToolbar         = modelActivity.myToolbar;
            model.gps               = modelActivity.gps;
            model.dialog            = modelActivity.dialog;
            model.dbGenericActivity = modelActivity.dbGenericActivity;
            Window.EnterTransition  = null;
            Window.SharedElementReenterTransition = null;
            Window.ReenterTransition = null;
            model.txtMetaDiaria      = FindViewById <TextView>(Resource.Id.txtMetaDiariaTarefa);
            model.barMetaDiaria      = FindViewById <ProgressBar>(Resource.Id.pBarMetaTarefa);

            model.modelPCL = new SPromoterMobile.MenuTarefasModel
            {
                idVisitas          = new ListTypePDV().FromIntentVar(Intent.GetStringExtra("visitas")),
                idsUsuariosLogados = new List <string>(),
                db = new MenuTarefasDA(SQLite_Android.DB.dataBase)
            };
            foreach (var itemIds in Intent.GetStringArrayListExtra("idUser"))
            {
                model.modelPCL.idsUsuariosLogados.Add(itemIds);
            }

            model.profileAvatar = FindViewById <CircleImageView>(Resource.Id.profile_image_tarefa);
            var users   = model.dbGenericActivity.GetUsersIDsLogged();
            var profile = users.Find((obj) => !string.IsNullOrEmpty(obj.AVATAR));

            if (profile != null && profile.AVATAR != null)
            {
                model.profileAvatar.SetImageBitmap(model.camera.GetBitMap(profile.AVATAR));
            }

            model.modelPCL.db     = new MenuTarefasDA(SQLite_Android.DB.dataBase);
            model.adapterProdutos = new CardInfoProdutosAdapter()
            {
                HasStableIds = true
            };
            model.adapterLoja = new CardInfoLojaAdapter()
            {
                HasStableIds = true
            };
            var modelFormDinamico = new FormDinamicoModel
            {
                Db = new FormDinamicoDA(SQLite_Android.DB.dataBase)
            };

            model.modelPCL.formDinamico = new FormDinamicoCon(modelFormDinamico);
            controller = new MenuTarefasCon(model.modelPCL);
            var layoutManagerProduto = new GridLayoutManager(this, 1, LinearLayoutManager.Vertical, false);

            mRecyclerViewProdutos = FindViewById <RecyclerView>(Resource.Id.card_list_produtos);
            mRecyclerViewProdutos.SetLayoutManager(layoutManagerProduto);
            mRecyclerViewProdutos.HasFixedSize = true;
            mRecyclerViewProdutos.SetItemViewCacheSize(20);
            mRecyclerViewProdutos.DrawingCacheEnabled = true;
            mRecyclerViewProdutos.DrawingCacheQuality = DrawingCacheQuality.High;

            var layoutManagerLoja = new GridLayoutManager(this, 1, LinearLayoutManager.Vertical, false);

            mRecyclerViewLoja = FindViewById <RecyclerView>(Resource.Id.card_list_loja);
            mRecyclerViewLoja.SetLayoutManager(layoutManagerLoja);
            mRecyclerViewLoja.HasFixedSize = true;
            mRecyclerViewLoja.SetItemViewCacheSize(20);
            mRecyclerViewLoja.DrawingCacheEnabled = true;
            mRecyclerViewLoja.DrawingCacheQuality = DrawingCacheQuality.High;
        }