public void OnAttendanceStop(Transaction openedTransaction, Attendance current)
        {
            if (openedTransaction == null)
            {
                throw new ArgumentNullException(nameof(openedTransaction));
            }

            if (current == null)
            {
                throw new ArgumentNullException(nameof(current));
            }

            var pharmacy = MainDatabase.GetEntity <Pharmacy>(Pharmacy.UUID);

            pharmacy.LastAttendance     = current.UUID;
            pharmacy.LastAttendanceDate = current.When;
            // TODO: Сделать глобальной настройкой
            pharmacy.NextAttendanceDate = Agent == null?current.When.AddDays(14) : current.When.AddDays(Agent.weeksInRout * 7);
        }
示例#2
0
        protected override void OnResume()
        {
            base.OnResume();

            //Start Tracking usage in this activit
            Tracking.StartUsage(this);

            var shared = GetSharedPreferences(C_MAIN_PREFS, FileCreationMode.Private);

            string username = shared.GetString(SigninDialog.C_USERNAME, string.Empty);

            if (string.IsNullOrEmpty(username))
            {
                Pharmacies            = new List <Pharmacy>();     //.Take(14).ToList();
                PharmacyTable.Adapter = new PharmacyAdapter(this, Pharmacies);

                var fragmentTransaction = FragmentManager.BeginTransaction();
                var prev = FragmentManager.FindFragmentByTag(SigninDialog.TAG);
                if (prev != null)
                {
                    fragmentTransaction.Remove(prev);
                }
                fragmentTransaction.AddToBackStack(null);

                var signinDialog = new SigninDialog(this);
                signinDialog.Show(fragmentTransaction, SigninDialog.TAG);
                signinDialog.SuccessSignedIn += (caller, arguments) => {
                    //Toast.MakeText(this, @"SuccessSignedIn", ToastLength.Short).Show();
                    RunOnUiThread(() => {
                        OnResume();
                        SDiag.Debug.WriteLine(@"DBPath = {0}", MainDatabase.DBPath);
                    });
                };

                SDiag.Debug.WriteLine(@"username = IsNullOrEmpty");
                return;
            }

            var ft = FragmentManager.BeginTransaction();
            var sd = FragmentManager.FindFragmentByTag(SigninDialog.TAG);

            if (sd != null)
            {
                ft.Remove(sd);
            }
            ft.Commit();

            if (!IsLocationActive() || !IsInternetActive())
            {
                return;
            }

            MainDatabase.Username = username;
            Helper.Username       = username;

            var agentUUID = shared.GetString(SigninDialog.C_AGENT_UUID, string.Empty);

            try {
                var agent = MainDatabase.GetItem <Agent>(agentUUID);
                MainDatabase.AgentUUID = agent.uuid;
                Helper.WeeksInRoute    = agent.weeksInRout;
                Helper.WorkMode        = agent.GetWorkMode();
                Helper.AndroidId       = Helper.GetAndroidId(this);
            } catch (Exception ex) {
                SDiag.Debug.WriteLine(ex.Message);
            }


            var packageInfo = ApplicationContext.PackageManager.GetPackageInfo(ApplicationContext.PackageName, 0);
            var version     = string.Format("Версия: {0} ({1})", packageInfo.VersionName, packageInfo.VersionCode);

            FindViewById <TextView>(Resource.Id.maVersionTV).Text = version;

            var w = new SDiag.Stopwatch();

            w.Restart();
            var currentRouteItems = MainDatabase.GetRouteItems(DateTimeOffset.Now);

            if (currentRouteItems.Count() > 0)
            {
                var nextDate      = DateTimeOffset.Now.AddDays(Helper.WeeksInRoute * 7);
                var date          = new DateTimeOffset(nextDate.Year, nextDate.Month, nextDate.Day, 0, 0, 0, new TimeSpan(0, 0, 0));
                var nextRoutItems = MainDatabase.GetRouteItems(date);

                if (nextRoutItems.Count() == 0)
                {
                    using (var trans = MainDatabase.BeginTransaction()){
                        foreach (var oldItem in currentRouteItems)
                        {
                            var newItem = MainDatabase.Create2 <RouteItem>();
                            newItem.Pharmacy = oldItem.Pharmacy;
                            newItem.Date     = date;
                            newItem.Order    = oldItem.Order;
                        }
                        trans.Commit();
                    }
                }
            }
            w.Stop();
            SDiag.Debug.WriteLine(@"Route: копирование={0}", w.ElapsedMilliseconds);

            w.Restart();
            int count = MainDatabase.GetItems <Attendance>()
                        .Count(att => att.When.LocalDateTime.Date == DateTimeOffset.Now.Date);

            AttendanceCount.Text = string.Format(
                @"РЕЖИМ РАБОТЫ: {0};  СЕГОДНЯ ВИЗИТОВ: {1}", Helper.GetWorkModeDesc(Helper.WorkMode), count
                );
            w.Stop();
            SDiag.Debug.WriteLine(@"OnResume: подсчет визитов={0}", w.ElapsedMilliseconds);

            var  sparseArray = SearchTable.CheckedItemPositions;
            bool hasCheckedItemInSearchTable = false;

            for (var i = 0; i < sparseArray.Size(); i++)
            {
                if (sparseArray.ValueAt(i))
                {
                    hasCheckedItemInSearchTable = true;
                    break;
                }
            }

            if (!hasCheckedItemInSearchTable)
            {
                RecreateAdapter();
            }

            var prefs = GetSharedPreferences(C_MAIN_PREFS, FileCreationMode.Private);
            var uuid  = prefs.GetString(C_SAVED_PHARMACY_UUID, string.Empty);

            if (string.IsNullOrEmpty(uuid))
            {
                return;
            }

            if (SearchItems == null)
            {
                return;
            }

            if (SearchItems.ContainsKey(uuid))
            {
                w.Start();
                var pharmacy = MainDatabase.GetEntity <Pharmacy>(uuid);
                SearchItems[uuid] = new SearchItem(
                    pharmacy.UUID,
                    pharmacy.GetName(),
                    string.IsNullOrEmpty(pharmacy.Subway) ? string.Empty : MainDatabase.GetItem <Subway>(pharmacy.Subway).name,
                    string.IsNullOrEmpty(pharmacy.Region) ? string.Empty : MainDatabase.GetItem <Region>(pharmacy.Region).name,
                    string.IsNullOrEmpty(pharmacy.Brand) ? string.Empty : pharmacy.Brand
                    );
            }
            prefs.Edit().PutString(C_SAVED_PHARMACY_UUID, string.Empty).Commit();
            w.Stop();
            SDiag.Debug.WriteLine(@"Search: обновление={0}", w.ElapsedMilliseconds);
        }
示例#3
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            RequestWindowFeature(WindowFeatures.NoTitle);
            Window.AddFlags(WindowManagerFlags.KeepScreenOn);

            // Register the crash manager before Initializing the trace writer
            CrashManager.Register(this, Secret.HockeyappAppId);

            // Register to with the Update Manager
            UpdateManager.Register(this, Secret.HockeyappAppId);

            HockeyLog.LogLevel = 2;

            // Register user metics
            MetricsManager.Register(Application, Secret.HockeyappAppId);
            MetricsManager.EnableUserMetrics();

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            PharmacyTable = FindViewById <ListView>(Resource.Id.maPharmacyTable);
            View header = LayoutInflater.Inflate(Resource.Layout.PharmacyTableHeader, PharmacyTable, false);

            PharmacyTable.AddHeaderView(header);
            PharmacyTable.Clickable  = true;
            PharmacyTable.ItemClick += OnListItemClick;

            var profile = FindViewById <ImageView>(Resource.Id.maProfile);

            profile.Click += (sender, e) => {
                StartActivity(new Intent(this, typeof(ProfileActivity)));
            };

            var add = FindViewById <ImageView>(Resource.Id.maAdd);

            add.Click += (sender, e) => {
                StartActivity(new Intent(this, typeof(PharmacyActivity)));
            };

            var sync = FindViewById <ImageView>(Resource.Id.maSync);

            sync.Click += (sender, e) => {
                StartActivity(new Intent(this, typeof(SyncActivity)));
            };
            sync.LongClick += (sender, e) => {
                StartActivity(new Intent(this, typeof(LoadDataActivity)));
            };

            var lib = FindViewById <ImageView>(Resource.Id.maLibrary);

            lib.Click += (sender, e) => {
                StartActivity(new Intent(this, typeof(LibraryActivity)));
            };
            lib.LongClick += (sender, e) => {
                StartActivity(new Intent(this, typeof(TestDataActivity)));
            };

            var route = FindViewById <ImageView>(Resource.Id.maRoute);

            route.Click += (sender, e) => {
                StartActivity(new Intent(this, typeof(RouteActivity)));
            };

            var searchView = FindViewById <RelativeLayout>(Resource.Id.maSearchRL);

            searchView.Click += (sender, e) => {
                if (CurrentFocus != null)
                {
                    var imm = (InputMethodManager)GetSystemService(InputMethodService);
                    imm.HideSoftInputFromWindow(CurrentFocus.WindowToken, HideSoftInputFlags.None);
                }

                searchView.Visibility = ViewStates.Gone;
            };
            var search = FindViewById <ImageView>(Resource.Id.maSearch);

            search.Click += (sender, e) => {
                searchView.Visibility = ViewStates.Visible;
            };

            var searchSettings = FindViewById <ImageView>(Resource.Id.maSearchSettingsIV);

            searchSettings.Click += (sender, e) => {
                Toast.MakeText(this, "maSearchSettingsIV Clicked", ToastLength.Short).Show();
            };

            SearchInput = FindViewById <EditText>(Resource.Id.maSearchInput);
            SearchInput.AfterTextChanged += (sender, e) => {
                Search(e.Editable.ToString());
            };

            SearchTable            = FindViewById <ListView>(Resource.Id.maSearchTable);
            SearchTable.ItemClick += (sender, e) => {
                if (sender is ListView)
                {
                    var lv = ((ListView)sender);

                    var cb = e.View.FindViewById <CheckBox>(Resource.Id.sriIsCheckedCB);
                    cb.Checked = lv.IsItemChecked(e.Position);

                    //e.View.Selected = lv.IsItemChecked(e.Position);
                    //lv.SetItemChecked(e.Position, true);
                    if (lv.Adapter is SearchResultAdapter)
                    {
                        var adapter = (SearchResultAdapter)lv.Adapter;

                        var newList     = new List <Pharmacy>();
                        var sparseArray = lv.CheckedItemPositions;
                        for (var i = 0; i < sparseArray.Size(); i++)
                        {
                            if (sparseArray.ValueAt(i))
                            {
                                newList.Add(MainDatabase.GetEntity <Pharmacy>(adapter[sparseArray.KeyAt(i)].UUID));
                            }
                        }

                        RecreateAdapter(newList);
                    }
                }
            };
            SearchTable.ItemSelected += (sender, e) => {
                if (sender is ListView)
                {
                    var lv = ((ListView)sender);
                    if (lv.Adapter is SearchResultAdapter)
                    {
                        var adapter = (SearchResultAdapter)lv.Adapter;
                        var obj     = adapter[(int)e.Id];
                    }
                }
            };

            Filter        = FindViewById <ImageView>(Resource.Id.maFilter);
            Filter.Click += Filter_Click;

            Filter.LongClick += (sender, e) => {
                var fragmentTransaction = FragmentManager.BeginTransaction();
                var prev = FragmentManager.FindFragmentByTag(FilterDialog.TAG);
                if (prev != null)
                {
                    fragmentTransaction.Remove(prev);
                }
                fragmentTransaction.AddToBackStack(null);

                var filterDialog = new FilterDialog();
                filterDialog.Show(fragmentTransaction, FilterDialog.TAG);
                filterDialog.AfterSaved += (caller, arguments) => {
                    GetSharedPreferences(FilterDialog.C_FILTER_PREFS, FileCreationMode.Private)
                    .Edit()
                    .PutBoolean("IS_ON", true)
                    .Commit();

                    RecreateAdapter();
                    //Filter_Click(sender, e);
                };
            };

            var message = FindViewById <ImageView>(Resource.Id.maMessage);

            message.Click += (sender, e) => {
                var fragmentTransaction = FragmentManager.BeginTransaction();
                var prev = FragmentManager.FindFragmentByTag(MessageDialog.TAG);
                if (prev != null)
                {
                    fragmentTransaction.Remove(prev);
                }
                fragmentTransaction.AddToBackStack(null);

                var messageDialog = new MessageDialog();
                messageDialog.Show(fragmentTransaction, MessageDialog.TAG);
                messageDialog.AfterSaved += (caller, arguments) => {
                    Toast.MakeText(this, "Message saved", ToastLength.Short).Show();
                };
            };

            message.LongClick += (sender, e) => {
                StartActivity(new Intent(this, typeof(MessageActivity)));
            };

            FilterContent   = FindViewById <TextView>(Resource.Id.maFilterTV);
            AttendanceCount = FindViewById <TextView>(Resource.Id.maAttendanceCountTV);


            //LoginManager.Register(this, Secret.HockeyappAppId, LoginManager.LoginModeEmailOnly);
            //LoginManager.VerifyLogin(this, Intent);
            UpdateManager.Register(this, Secret.HockeyappAppId);
        }