Ejemplo n.º 1
0
        protected override void OnAppearing()
        {
            base.OnAppearing();
            try
            {
                configuration = AiDataStore.GetConfiguration();
                Inspections   = configuration.Inspections.Where(x => x.FarmerKey == questionaire.Key).ToList();

                if (Inspections.Count > 0)
                {
                    fields.IsVisible      = true;
                    nofields.IsVisible    = false;
                    lfieldStack.IsVisible = true;
                    fields.ItemsSource    = Inspections;
                }
                else
                {
                    fields.IsVisible      = false;
                    nofields.IsVisible    = true;
                    lfieldStack.IsVisible = false;
                }
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 2
0
        private void OnSave(object sender, EventArgs args)
        {
            try
            {
                if (string.IsNullOrEmpty(Username.Text))
                {
                    Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("Enter username to proceed", MessageType.Regular, promptPageState), true));
                    return;
                }

                if (user.UserName.Equals(Username.Text))
                {
                    Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("The username you've entered is the same as the current one", MessageType.Regular, promptPageState), true));
                    return;
                }

                //Save configuration
                configuration.Users.Find(x => x.UserName == user.UserName).UserName = Username.Text;
                AiDataStore.SaveConfiguration(configuration);

                //Save user
                user.UserName = Username.Text;
                AiDataStore.SaveUser(user);

                //Close Popup
                promptPageState.OnResumePage(null);
                Task.Run(async() => await PopupNavigation.Instance.RemovePageAsync(this));
            }
            catch (Exception ex)
            {
                Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox(ex.Message, MessageType.Regular, promptPageState), true));
            }
        }
Ejemplo n.º 3
0
        public QSections(DCAnalytics.ObjectType objectType, Questionaire _questionaire, QuestionairePageState questionairePageState = null, Certification _certification = null, FieldInspection _fieldInspection = null)
        {
            InitializeComponent();
            controls                   = new UIControls(this);
            ObjectType                 = objectType;
            selectPageState            = this;
            promptPageState            = this;
            picturePageState           = this;
            locationPageState          = this;
            questionaire               = null;
            questionaire               = _questionaire;
            FieldInspection            = _fieldInspection;
            certification              = _certification;
            Title                      = questionaire.Name;
            this.questionairePageState = questionairePageState;
            sectionViews               = new List <SectionView>();
            _questionaireStatus        = string.IsNullOrEmpty(questionaire.Key) ? QuestionaireStatus.Create : QuestionaireStatus.Modify;
            _dbManager                 = new DatabaseManager();
            user          = AiDataStore.GetUser();
            configuration = AiDataStore.GetConfiguration();
            isValid       = true;

            Sections.Clear();
            Sections = (FieldInspection != null) ?
                       FieldInspection.Sections:
                       (certification != null) ?
                       certification.Sections:
                       questionaire.Sections;
            dependencies.Clear();
            navigatedTargetSections.Clear();
            controls.targets.Clear();
            Init();
        }
Ejemplo n.º 4
0
 private void OnRefreshQuestionaires(object sender, EventArgs args)
 {
     try
     {
         _template = configuration.Questionaires.Find(q => q.Status == DCAnalytics.Statuses.Template);
         Task.Factory.StartNew(async() => {
             var response        = Synchronization.GetModifiedQuestionaire(_template.OID).Result;
             var responseContent = await response.Content.ReadAsStringAsync();
             questionaire        = JsonConvert.DeserializeObject <Questionaire>(responseContent);
         }).ContinueWith(task => {
             Device.BeginInvokeOnMainThread(() =>
             {
                 if (questionaire != null)
                 {
                     configuration.Questionaires[configuration.Questionaires.IndexOf(_template)] = questionaire;
                     AiDataStore.SaveConfiguration(configuration);
                     RefreshQuestionaires(questionaire);
                 }
                 else
                 {
                     Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("Something went wrong, please try again", MessageType.Regular, this)));
                 }
             });
         }, TaskScheduler.FromCurrentSynchronizationContext());
     }
     catch (Exception ex)
     {
         Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("Something went wrong, please try again", MessageType.Regular, this)));
     }
 }
Ejemplo n.º 5
0
        private void OnTrainerAdded(object sender, EventArgs args)
        {
            try
            {
                if (string.IsNullOrEmpty(Name.Text))
                {
                    Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("Name cannot be empty", MessageType.Regular, promptPageState)));
                }
                else
                {
                    configuration.Trainings.Find(x => x.Name == training.Name).Trainers.Add(new Trainer
                    {
                        Key  = Guid.NewGuid().ToString(),
                        Name = Name.Text
                    });

                    AiDataStore.SaveConfiguration(configuration);
                    promptPageState.OnResumePage(null);
                }
            }
            catch (Exception ex)
            {
                //DisplayAlert("Error", ex.Message);
                Debug.WriteLine($"Exception after Selection Complete:  {ex}");
            }
        }
Ejemplo n.º 6
0
        private async Task SynchronizeQuestionaires()
        {
            try
            {
                var questionaires = configuration.Questionaires.Where(q => q.Status != DCAnalytics.Statuses.Template).ToList();
                for (int q = questionaires.Count - 1; q >= 0; q--)
                {
                    var questionaire = questionaires[q];
                    var result       = await Task.Factory.StartNew(async() => {
                        var response        = Data.Synchronization.SynchronizeQuestionaire(questionaire).Result;
                        var responseContent = await response.Content.ReadAsStringAsync();
                        return(JsonConvert.DeserializeObject <bool>(responseContent));
                    });

                    isSynchronized = !isSynchronized ? isSynchronized : result.Result;
                    if (isSynchronized)
                    {
                        configuration.Questionaires.Remove(questionaire);
                    }
                }

                AiDataStore.SaveConfiguration(configuration);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 7
0
        private void OnTraineeTapped(object sender, ItemTappedEventArgs args)
        {
            try
            {
                var qItem = args.Item as QItem;
                var qn    = qns.Find(q => q.Key == qItem.ID);
                qn.IsSelected = true;

                var _training = configuration.Trainings.Find(x => x.Name == training.Name);

                var _trainee = _training.Trainees.Find(t => t.FarmerKey == qn.Key);
                if (_trainee == null)
                {
                    _trainee = new Trainee
                    {
                        Key       = Guid.NewGuid().ToString(),
                        FarmerKey = qn.Key
                    };

                    _training.Trainees.Add(_trainee);
                }

                AiDataStore.SaveConfiguration(configuration);

                Navigation.RemovePage(this);
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 8
0
 private void InitClient()
 {
     try
     {
         Task.Factory.StartNew(async() => {
             // Do some work on a background thread, allowing the UI to remain responsive
             var response        = Synchronization.Client(user.ClientId).Result;
             var responseContent = await response.Content.ReadAsStringAsync();
             client = JsonConvert.DeserializeObject <Client>(responseContent);
         }).ContinueWith(task => {
             Device.BeginInvokeOnMainThread(() =>
             {
                 if (client != null)
                 {
                     AiDataStore.SaveClient(client);
                     InitConfigurations();
                 }
                 else
                 {
                     Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("Unfortunately, your account has no affiliation to any client, please contact your admin for a possible solution", MessageType.Regular, PromptPageState)));
                     AiDataStore.Logout();
                 }
             });
         }, TaskScheduler.FromCurrentSynchronizationContext());
     }
     catch (Exception ex)
     {
         Debug.Write(ex.StackTrace);
     }
 }
Ejemplo n.º 9
0
 public void InitConfigurations()
 {
     try
     {
         Task.Factory.StartNew(async() => {
             // Do some work on a background thread, allowing the UI to remain responsive
             var response        = Synchronization.Configurations(user).Result;
             var responseContent = await response.Content.ReadAsStringAsync();
             configurations      = JsonConvert.DeserializeObject <List <Configuration> >(responseContent);
         }).ContinueWith(task => {
             Device.BeginInvokeOnMainThread(() =>
             {
                 progressIndicator.IsVisible = false;
                 if (configurations == null)
                 {
                     Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("Unfortunately, you have not been attached to any configuration, please get in touch with your team lead to attach you to one", MessageType.Regular, PromptPageState)));
                     AiDataStore.Logout();
                     App.Current.MainPage = new NavigationPage(new SignIn());
                 }
                 else
                 {
                     Init();
                     AiDataStore.SaveConfigurations(configurations);
                 }
             });
         }, TaskScheduler.FromCurrentSynchronizationContext());
     }
     catch (Exception ex)
     {
         Debug.Write(ex.StackTrace);
     }
 }
Ejemplo n.º 10
0
 public NavigationDrawer()
 {
     InitializeComponent();
     user   = AiDataStore.GetUser();
     client = AiDataStore.Client();
     Init();
 }
Ejemplo n.º 11
0
        private async Task SynchronizeTrainings()
        {
            try
            {
                for (int t = configuration.Trainings.Count - 1; t >= 0; t--)
                {
                    var training = configuration.Trainings[t];
                    var result   = await Task.Factory.StartNew(async() => {
                        var response        = Data.Synchronization.SynchronizeTraining(training).Result;
                        var responseContent = await response.Content.ReadAsStringAsync();
                        return(JsonConvert.DeserializeObject <bool>(responseContent));
                    });

                    isSynchronized = !isSynchronized ? isSynchronized : result.Result;
                    if (isSynchronized)
                    {
                        training.Trainees.Clear();
                    }
                }

                AiDataStore.SaveConfiguration(configuration);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 12
0
        private async Task SynchronizePurchases()
        {
            try
            {
                for (int p = configuration.Purchases.Count - 1; p >= 0; p--)
                {
                    var purchase = configuration.Purchases[p];
                    var result   = await Task.Factory.StartNew(async() => {
                        var response        = Data.Synchronization.SynchronizePurchase(purchase).Result;
                        var responseContent = await response.Content.ReadAsStringAsync();
                        return(JsonConvert.DeserializeObject <bool>(responseContent));
                    });

                    isSynchronized = !isSynchronized ? isSynchronized : result.Result;
                    if (isSynchronized)
                    {
                        configuration.Purchases.Remove(purchase);
                    }
                }

                AiDataStore.SaveConfiguration(configuration);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 13
0
        private async Task SynchronizeInspections()
        {
            try
            {
                var inspections = configuration.Inspections.Where(x => !string.IsNullOrEmpty(x.FarmerKey)).ToList();
                for (int i = inspections.Count - 1; i >= 0; i--)
                {
                    var inspection = inspections[i];
                    var result     = await Task.Factory.StartNew(async() => {
                        var response        = Data.Synchronization.SynchronizeInspection(inspection).Result;
                        var responseContent = await response.Content.ReadAsStringAsync();
                        return(JsonConvert.DeserializeObject <bool>(responseContent));
                    });

                    isSynchronized = !isSynchronized ? isSynchronized : result.Result;
                    if (isSynchronized)
                    {
                        configuration.Inspections.Remove(inspection);
                    }
                }

                AiDataStore.SaveConfiguration(configuration);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 14
0
 public ChangePassword(PromptPageState promptPageState)
 {
     InitializeComponent();
     this.promptPageState = promptPageState;
     configuration        = AiDataStore.GetConfiguration();
     user = AiDataStore.GetUser();
 }
Ejemplo n.º 15
0
        public ChangeUsername(PromptPageState promptPageState)
        {
            InitializeComponent();
            this.promptPageState = promptPageState;
            this.configuration   = AiDataStore.GetConfiguration();
            this.user            = AiDataStore.GetUser();

            Username.Text = user.UserName;
        }
Ejemplo n.º 16
0
 public void OnExit()
 {
     try
     {
         AiDataStore.Logout();
         App.Current.MainPage = new NavigationPage(new SignIn());
     }
     catch (Exception ex)
     {
     }
 }
Ejemplo n.º 17
0
        public Trainings(string Title = null)
        {
            InitializeComponent();
            if (!string.IsNullOrEmpty(Title))
            {
                this.Title = Title;
            }

            this.configuration = AiDataStore.GetConfiguration();
            Init();
        }
Ejemplo n.º 18
0
 public void OnConfirm()
 {
     try
     {
         configuration.Questionaires.Remove(configuration.Questionaires.Find(x => x.Key == Questionaire.Key));
         AiDataStore.SaveConfiguration(configuration);
         Navigation.RemovePage(this);
     }
     catch (Exception ex)
     {
     }
 }
Ejemplo n.º 19
0
 private async void OnSynchronizationTapped(object sender, EventArgs args)
 {
     try
     {
         configuration = AiDataStore.GetConfiguration();
         (Application.Current.MainPage as MasterDetailPage).IsPresented = false;
         Synchronize = new Synchronize(this);
         await PopupNavigation.Instance.PushAsync(Synchronize);
     }
     catch (Exception ex)
     {
     }
 }
Ejemplo n.º 20
0
 public void OnConfirm()
 {
     try
     {
         configuration.Questionaires.Remove(configuration.Questionaires.Find(x => x.Key == questionaire.Key));
         AiDataStore.SaveConfiguration(configuration);
         Navigation.RemovePage(this);
     }
     catch (Exception ex)
     {
         Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox(ex.StackTrace, MessageType.Regular, this), true));
     }
 }
Ejemplo n.º 21
0
        private void PurchaseItem(object sender, EventArgs args)
        {
            try
            {
                if (string.IsNullOrEmpty(stationLbl.ClassId) || string.IsNullOrEmpty(productLbl.ClassId) || string.IsNullOrEmpty(qty.Text) || string.IsNullOrEmpty(price.Text))
                {
                    Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("All fields should be filled", MessageType.Regular, this), true));
                }
                else
                {
                    if (purchase == null)
                    {
                        purchase = new Models.Purchase
                        {
                            Key             = Guid.NewGuid().ToString(),
                            Lotid           = (configuration.Purchases.Count() == 0) ? "LotId1" : "LotId" + (Convert.ToInt64(Regex.Match(configuration.Purchases.Last().Lotid, @"\d+$").Value) + 1),
                            DateOfPurchase  = DateTime.Now.Date,
                            Farmer          = questionaire.Key,
                            ConfigurationId = configuration.OID,
                            CreatedBy       = User.Key
                        }
                    }
                    ;

                    purchase.Price       = Convert.ToDecimal(price.Text);
                    purchase.Quantity    = Convert.ToDecimal(qty.Text);
                    purchase.Product     = int.Parse(productLbl.ClassId);
                    purchase.Station     = int.Parse(stationLbl.ClassId);
                    purchase.TotalAmount = Convert.ToDecimal(price.Text) * Convert.ToDecimal(qty.Text);

                    var configPurchase = configuration.Purchases.Find(x => x.Key == purchase.Key);
                    if (configPurchase == null)
                    {
                        configuration.Purchases.Add(purchase);
                    }
                    else
                    {
                        configPurchase = purchase;
                    }

                    AiDataStore.SaveConfiguration(configuration);

                    Navigation.RemovePage(this);
                }
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 22
0
        private void Init()
        {
            try
            {
                configuration = AiDataStore.GetConfiguration();
                user          = AiDataStore.GetUser();

                names.Text    = user.Firstname + " " + user.Lastname;
                username.Text = user.UserName;
                mail.Text     = user.Email;
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 23
0
        private void OnConfigurationTapped(object sender, ItemTappedEventArgs args)
        {
            try
            {
                var configuration = args.Item as Configuration;
                AiDataStore.SaveConfiguration(configuration);

                var configUser = configuration.Users.Find(u => u.OID == user.OID);

                //App.Current.MainPage = new MainPage(configUser.UserRights.FirstOrDefault().ObjectType);
                App.Current.MainPage = new MainPage();
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 24
0
        public SaveQuestionaire()
        {
            InitializeComponent();

            try
            {
                user = AiDataStore.GetUser();
                if (user.UserRights.Where(x => x.ObjectType == DCAnalytics.ObjectType.Certification).ToList().Count() > 0)
                {
                    returnLbl.Text    = "RETURN TO CERTIFICATE";
                    reportStatus.Text = "Submit Certification";
                }
            }
            catch (Exception ex)
            {
                Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox(ex.StackTrace, MessageType.Regular, this), true));
            }
        }
Ejemplo n.º 25
0
        public Purchase(Models.Purchase purchase = null, Questionaire questionaire = null)
        {
            InitializeComponent();
            configuration     = AiDataStore.GetConfiguration();
            this.questionaire = questionaire;
            this.purchase     = purchase;

            Question qn = questionaire.Sections.FirstOrDefault().Questions.Find(x => x.QuestionText == "Name");

            if (qn != null)
            {
                name.Text = qn.Answers.FirstOrDefault().AnswerText;
            }

            if (purchase != null)
            {
                Init();
            }
        }
Ejemplo n.º 26
0
 private void OnSignOutTapped(object sender, EventArgs args)
 {
     try
     {
         (Application.Current.MainPage as MasterDetailPage).IsPresented = false;
         configuration = AiDataStore.GetConfiguration();
         if (!IsDataExisting())
         {
             Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("You have unsynchronized data, are you sure you want to logout?", MessageType.Logout, this)));
         }
         else
         {
             OnExit();
         }
     }
     catch (Exception ex)
     {
     }
 }
Ejemplo n.º 27
0
        private void Init()
        {
            configuration = AiDataStore.GetConfiguration();
            var _purchases = configuration.Purchases.Where(x => x.Farmer == questionaire.Key).ToList();

            if (_purchases.Count > 0)
            {
                purchases.IsVisible   = true;
                nextPageFAB.IsVisible = true;
                nopurchases.IsVisible = false;
                purchases.ItemsSource = _purchases;
            }
            else
            {
                purchases.IsVisible   = false;
                nextPageFAB.IsVisible = false;
                nopurchases.IsVisible = true;
            }
        }
Ejemplo n.º 28
0
        private void Init()
        {
            try
            {
                user = AiDataStore.GetUser();

                var answer = questionaire.Sections.FirstOrDefault().Questions.Find(x => x.QuestionText == "Name").Answers.FirstOrDefault();
                name.Text = answer.AnswerText;
                Question qn = questionaire.Sections.FirstOrDefault().Questions.Find(x => x.QuestionText == "Region");
                if (qn != null)
                {
                    if (qn.Answers != null)
                    {
                        region.IsVisible = true;
                        region.Text      = qn.EnumList.EnumValues.Find(r => r.Code == Convert.ToInt64(qn.Answers.FirstOrDefault())).Description;
                    }
                }

                if (ObjectType == DCAnalytics.ObjectType.Purchase)
                {
                    actionBtn.Text     = "Purchase";
                    actionBtn.Clicked += OnPurchase;
                }
                else if (ObjectType == DCAnalytics.ObjectType.Certification)
                {
                    actionBtn.Text     = "Certify";
                    actionBtn.Clicked += OnCertify;
                }
                else if (ObjectType == DCAnalytics.ObjectType.Purchase)
                {
                    actionBtn.Text     = "Purchase";
                    actionBtn.Clicked += OnPurchase;
                }
                else
                {
                    actionBtn.Text     = "Survey";
                    actionBtn.Clicked += OnSurvey;
                }
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 29
0
        public void Authorize()
        {
            //Show progress indicator
            processInIndicator.IsVisible = true;
            processInIndicator.IsRunning = true;
            signInLbl.Text = "Please wait...";

            Task.Factory.StartNew(async() =>
            {
                // Do some work on a background thread, allowing the UI to remain responsive
                user = configuration.Users.Find(x => x.UserName == Username.Text && x.Password == Password.Text);
            }).ContinueWith(task =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    try
                    {
                        Task.Run(async() => await Task.Delay(5000));
                        //Hide progress indicator
                        processInIndicator.IsRunning = false;
                        processInIndicator.IsVisible = false;

                        if (user != null)
                        {
                            AiDataStore.SaveUser(user);
                            StartApplication(user.UserRights.FirstOrDefault().ObjectType);
                        }
                        else
                        {
                            Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("Wrong username or password", MessageType.Regular, this)));
                            signInLbl.Text = "SIGN IN";
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                });
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
Ejemplo n.º 30
0
        private void OnSave(object sender, EventArgs args)
        {
            try
            {
                if (string.IsNullOrEmpty(CPassword.Text) || string.IsNullOrEmpty(NPassword.Text) || string.IsNullOrEmpty(Password.Text))
                {
                    Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("Enter missing password to proceed", MessageType.Regular, promptPageState), true));
                    return;
                }

                if (user.Password.Equals(NPassword.Text))
                {
                    Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("You've entered a wrong current password", MessageType.Regular, promptPageState), true));
                    return;
                }

                if (!NPassword.Text.Equals(Password.Text))
                {
                    Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox("New Password doesnot match the confirmed password", MessageType.Regular, promptPageState), true));
                    return;
                }

                //Save configuration
                configuration.Users.Find(x => x.UserName == user.UserName).Password = NPassword.Text;
                AiDataStore.SaveConfiguration(configuration);

                //Save user
                user.Password = NPassword.Text;
                AiDataStore.SaveUser(user);

                //Close Popup
                Task.Run(async() => await PopupNavigation.Instance.RemovePageAsync(this));
            }
            catch (Exception ex)
            {
                Task.Run(async() => await PopupNavigation.Instance.PushAsync(new MessageBox(ex.Message, MessageType.Regular, promptPageState), true));
            }
        }