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); }
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); }
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); }