public override async System.Threading.Tasks.Task<DataAccessLayer.SOAResult> DownloadLocalAsync(User user, string deviceLanguage)
        {
            Console.WriteLine("__________________________________ START ___________________________________________________");
            DataAccessLayer.SOAResult result = DataAccessLayer.SOAResult.FALSE;
            try
                {
                // In this progress we increase the progress status, too
                // Main step: Kunden Data
                DataAccessLayer.PerformanceWatch stopWatch = new DataAccessLayer.PerformanceWatch();
                stopWatch.Start();
                ResetProgressStatus();

                ProgressStatusWish = 1;
                DataAccessLayer.DAL_Kunde dal_Kunde = new DataAccessLayer.DAL_Kunde();

                using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                    result = await dal_Kunde.InsertKundeAsync(this, user,true); 
                }
//                result = await dal_Kunde.InsertKundeAsync(this,  user,true);
                ProgressStatus = 1;
                stopWatch.Stop();
                stopWatch.PrintConsole ("InsertKundeAsync");



                // Then the related data
                // 1. Ansprechpartner

                if (result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 2;
                    List<Ansprechpartner> ansprechpartnern = await Ansprechpartner.GetAnsprechpartnernAsync(this.ID, deviceLanguage, user);
                    ProgressStatus += 2;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetAnsprechpartnernAsync");
                    stopWatch.Start();
                    ProgressStatusWish += 1;
                    DataAccessLayer.DAL_Ansprechpartner dal_ansprechpartner = new DataAccessLayer.DAL_Ansprechpartner();
                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                    result =  await System.Threading.Tasks.Task.Run(() =>dal_ansprechpartner.InsertAnsprechpartnernAsync(ansprechpartnern,user,true));
                    }
                    ProgressStatus += 1;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertAnsprechpartnernAsync");
                    ansprechpartnern = null;
                }

                // 2. PersonUmsatz for Charts
                if (result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 3;
                    List<BusinessLayer.PersonUmsatz> PersonUmsatzList =  await GetPersonTimeUmsatzAsync ("36",   user);
                    ProgressStatus += 3;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetPersonTimeUmsatzAsync");
                    stopWatch.Start();
                    ProgressStatusWish += 2;
                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                    result =  await System.Threading.Tasks.Task.Run(() =>dal_Kunde.InsertPersonUmsatzAsync(PersonUmsatzList ,this, user, true));
                    }
                    ProgressStatus += 2;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertPersonUmsatzAsync");
                    PersonUmsatzList = null;
                    stopWatch.PrintConsole ("Finished InsertPersonUmsatzAsync");
                }

                // 3. Tasks and related data
                // I. Tasks
                DataAccessLayer.DAL_Task dal_task = new DataAccessLayer.DAL_Task();
                if (result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 11;
                    Console.WriteLine("Start dal_task.GetTasksAsync");
                    List<Task> tasks = await dal_task.GetTasksAsync(this.ID,  user);
                    ProgressStatus += 11;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetTasksAsync");
                    stopWatch.Start();
                    stopWatch.PrintConsole ("GetTasksAsync2");
                    ProgressStatusWish += 32;
                    stopWatch.PrintConsole ("GetTasksAsync3");

                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                                           result =  await System.Threading.Tasks.Task.Run(() =>dal_task.InsertTasksAsync(tasks, user, true));
                    }
                    stopWatch.PrintConsole ("GetTasksAsync4");

                    //result = await dal_task.InsertTasksAsync(tasks, user, true);
                    ProgressStatus += 32;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertTasksAsync");
                    tasks = null;

                }

                // II. TaskArt
                if (result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 2;
                    List<TaskArt> taskArts = await DataAccessLayer.DAL_Task.GetTaskArtsAsync(user);
                    ProgressStatus += 2;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetTaskArtsAsync");
                    stopWatch.Start();
                    ProgressStatusWish += 1;
                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                    result =  await System.Threading.Tasks.Task.Run(() =>dal_task.InsertTaskArtsAsync(taskArts, user, true));
                    }
                    ProgressStatus += 1;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertTaskArtsAsync");
                    taskArts = null;
                }

                // III. TaskTyp
                if (result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 3;
                    List<TaskTyp> taskTyps = await DataAccessLayer.DAL_Task.GetTaskTypsAsync(user);
                    ProgressStatus += 3;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetTaskTypsAsync");
                    stopWatch.Start();
                    ProgressStatusWish += 1;
                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                                           result =  await System.Threading.Tasks.Task.Run(() =>dal_task.InsertTaskTypsAsync(taskTyps, user, true));
                    }
                    ProgressStatus += 1;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertTaskTypsAsync");
                }

                // IV. Mitarbeiter
                if (result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 2;
                    List<Mitarbeiter> mitarbeitern = await DataAccessLayer.DAL_Task.GetTaskMitarbeiternAsync(user);
                    ProgressStatus += 2;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetTaskMitarbeiternAsync");
                    stopWatch.Start();
                    ProgressStatusWish += 1;
                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                    result =  await System.Threading.Tasks.Task.Run(() =>dal_task.InsertMitarbeiternAsync(mitarbeitern, user, true));
                    }
                    ProgressStatus += 1;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertMitarbeiternAsync");
                }

                // V. Abteilung
                if (result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 2;
                    List<Abteilung> abteilungen = await DataAccessLayer.DAL_Task.GetTaskAbteilungenAsync(user);
                    ProgressStatus += 2;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetTaskAbteilungenAsync");
                    stopWatch.Start();
                    ProgressStatusWish += 1;
                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                    result =  await System.Threading.Tasks.Task.Run(() => dal_task.InsertAbteilungenAsync(abteilungen, user, true));
                    }
                    ProgressStatus += 1;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertAbteilungenAsync");
                }

                // VI. Angebote
                DataAccessLayer.DAL_Angebot dal_angebot = new DataAccessLayer.DAL_Angebot();
                DataAccessLayer.DAL_Position dal_position = new DataAccessLayer.DAL_Position();
                if(result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 7;
                    List<Angebot> angebote = await dal_angebot.GetAngeboteAsync(ID, deviceLanguage, user);
                    ProgressStatus += 7;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetAngeboteAsync");
                    stopWatch.Start();
                    foreach (var angebot in angebote)
                    {
                        List<Position> positionen = await dal_position.GetPositionenAsync(angebot.ID, angebot.Waehrung, deviceLanguage, user);
                        result = await System.Threading.Tasks.Task.Run(() => dal_position.InsertPositionenAsync(positionen, user, true));
                    }
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("AngebotGetPositionenAsyncInsertPositionenAsync");
                    ProgressStatusWish += 11;
                    stopWatch.Start();
                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                    result =  await System.Threading.Tasks.Task.Run(() => dal_angebot.InsertAngeboteAsync(angebote, user, true));
                    }
                    ProgressStatus += 11;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertAngeboteAsync");

                }

                // VI. Auftraege
                DataAccessLayer.DAL_Auftrag dal_auftrag = new DataAccessLayer.DAL_Auftrag();

                if(result == DataAccessLayer.SOAResult.TRUE)
                {
                    stopWatch.Start();
                    ProgressStatusWish += 7;
                    List<Auftrag> auftraege = await dal_auftrag.GetAuftraegeAsync(ID, deviceLanguage, user);
                    ProgressStatus += 7;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("GetAuftraegeAsync");
                    stopWatch.Start();
                    foreach (var auftrag in auftraege)
                    {

                        List<Position> positionen = await dal_position.GetPositionenAsync(auftrag.ID, auftrag.Waehrung, deviceLanguage, user);
                        result = await System.Threading.Tasks.Task.Run(() => dal_position.InsertPositionenAsync(positionen, user, true));
                    }
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("AuftragGetPositionenAsyncInsertPositionenAsync");
                    ProgressStatusWish += 6;
                    stopWatch.Start();
                    using (await DataAccessLayer.SQLiteUtilities.Mutex.LockAsync ().ConfigureAwait (false)) { 
                                           result =  await System.Threading.Tasks.Task.Run(() => dal_auftrag.InsertAuftraegeAsync(auftraege, user, true));
                    }
                    ProgressStatus += 6;
                    stopWatch.Stop();
                    stopWatch.PrintConsole ("InsertAuftraegeAsync");
                    Console.WriteLine("__________________________________ END ___________________________________________________");

                }
            }
            catch (Exception ex)
            {
                DataAccessLayer.ExceptionWriter.WriteLogFile(ex);
            }

            return result;

        }
Example #2
0
		async public Task<bool> BtnSaveClickAsync()
		{
			// Test if the controls are filled 
			if (GetControlReferences () == false)
				return false ;

			if (Validate () == false)
				return false;

            _task.Typ = BusinessLayer.UtilityClasses.taskTyps [_spinnerTyp.SelectedItemPosition].ID;
            _task.Art = BusinessLayer.UtilityClasses.taskArts [_spinnerArt.SelectedItemPosition].ID;

			// First test if the task is going to be closed
            if (_task.Status == "0" && _taskStatus[ _spinnerStatus.SelectedItemPosition].StartsWith("1") == true)
			{
				// Because the task is been closed, we have to enter the following values
				_task.User_Close =MainActivity.User.Name;
				_task.Datum_Close =  DateTime.Now.ToString ("dd.MM.yyyy");
				_task.Time_Close = 	 DateTime.Now.Hour.ToString ("00") + ":" + DateTime.Now.Minute.ToString ("00");

			}
            else if(_task.ID == null && _taskStatus[_spinnerStatus.SelectedItemPosition].StartsWith("1") == true)
			{
				// Because the task is been closed, we have to enter the following values
				_task.User_Close =MainActivity.User.Name;
				_task.Datum_Close =  DateTime.Now.ToString ("dd.MM.yyyy");
				_task.Time_Close = 	 DateTime.Now.Hour.ToString ("00") + ":" + DateTime.Now.Minute.ToString ("00");
			}
			else
			{
				_task.User_Close = "";
				_task.Datum_Close = "";
				_task.Time_Close = "00:00:00,00";
			}

			_task.Status = _taskStatus[ _spinnerStatus.SelectedItemPosition].Substring(0,1);

			if (_ansprechpartner != null)
				_task.AnsprechpartnerID = _ansprechpartner.ID;
			else
				_task.AnsprechpartnerID = "0";

			_task.Adr_Id =  _stateClass._person.ID;
			_task.Datum = _edDatum.Text;
			_task.Zeit = _edZeit.Text;
            _task.Mitarbeiter = BusinessLayer.UtilityClasses.mitarbeitern[ _spinnerMitarbeiter.SelectedItemPosition].Name;
            _task.Abteilung = BusinessLayer.UtilityClasses.abteilungen[ _spinnerAbteilung.SelectedItemPosition].Name;
			_task.Ansprechpartner = _edAnsprechpartner.Text;//_ansprechpartnern[ _spinnerAnsprechpartner.SelectedItemPosition].Name; 
			_task.Memo = _edText.Text;
			_task.Datum_Save = _edDatumEdit.Text;
			_task.User_Save =MainActivity.User.Name;
			_task.Time_TelStart = _edStartTelefon.Text;
			_task.Time_TelDauer = _edDauerTelefon.Text;

			if (string.IsNullOrEmpty ( _task.ID) )
				_task.Datum_Edit = DateTime.Now.ToString ("dd.MM.yyyy");

			if (_task.ID == null)
			{
				// INSERT statement
                // if we are working with the Offline Database, we have to create a custom ID
                if (MainActivity.User.NetworkStatus == DataAccessLayer.NetworkState.Disconnected)
                    // "OF" for Offline + Date + Time
                    _task.ID = "OF" + DateTime.Now.ToString("dd.MM.yyyy") + DateTime.Now.ToString("hh:mm:ss");

                var result = await _task.SaveAsync(MainActivity.User);
                if ( result ==  DataAccessLayer.SOAResult.FALSE || result == DataAccessLayer.SOAResult.Disconnected) 
  					return false;

				_tasks.Insert (0, _task);
				_edNummer.Text = _task.ID;

				// Redraw the spinner
				_spinnerTask = _mainActivity.FindViewById<Spinner> (Resource.Id.spinnerTasks);
				_spinnerTask.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs> (SpinnerTaskItemSelected );
				TaskViewAdapter _adapterTask = new TaskViewAdapter (_mainActivity,_tasks);
				_spinnerTask.Adapter = _adapterTask;

			}
			else
			{
				// UPDATE statement
                var result = await _task.SaveAsync(MainActivity.User);
                if ( result ==  DataAccessLayer.SOAResult.FALSE || result == DataAccessLayer.SOAResult.Disconnected) 
					return false;

				// Redraw the spinner
				_spinnerTask = _mainActivity.FindViewById<Spinner> (Resource.Id.spinnerTasks);
				_spinnerTask.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs> (SpinnerTaskItemSelected );
				TaskViewAdapter _adapterTask = new TaskViewAdapter (_mainActivity,_tasks);
				_spinnerTask.Adapter = _adapterTask;
				_spinnerTask.SetSelection (_selectedIndex);
			}

			// Disable the controls
			DisableControls ();

            // Configure the buttons
            if (MainActivity.User.NetworkStatus == DataAccessLayer.NetworkState.Disconnected)
                ConfigureButtons(permission.Create, permission.Update, false, false, false);
            else
                ConfigureButtons(permission.Create , permission.Update, false, false, permission.UpDownload);

			DataAccessLayer.PerformanceWatch stopWatch = new DataAccessLayer.PerformanceWatch();

			return true;
		}
Example #3
0
		async private void  ListItemClickAsync ( AdapterView.ItemClickEventArgs args)
		{
			ProgressDialog progressDialog = null;

			try
			{
				// Run the progressbar
                progressDialog = ProgressDialog.Show(this, "Apollo",Resources.GetString(Resource.String.Loading), false);
				progressDialog.SetProgressStyle(ProgressDialogStyle.Spinner);
				DataAccessLayer.PerformanceWatch stopWatch = new DataAccessLayer.PerformanceWatch();
				stopWatch.Start();

				Android.Views.InputMethods.InputMethodManager imm = (Android.Views.InputMethods.InputMethodManager)GetSystemService(Context.InputMethodService);
				imm.HideSoftInputFromWindow(_edSearch.WindowToken, 0);


				_list.ChoiceMode = ChoiceMode.Single;

//				if (selectedRow != null)
//					selectedRow.SetBackgroundResource(Android.Resource.Color.Transparent);
//
				_list.SetItemChecked (args.Position ,true);
//
//				if (selectedRow != null) {
//					selectedRow.SetBackgroundResource(Android.Resource.Color.Transparent);
//				}
//				selectedRow = args.View;
				//args.View.SetBackgroundResource(Android.Resource.Color.HoloOrangeDark);

				await _mainUIManager.ListViewClickAsync (args.Position);			

				// This could happen to fast, so show the progress dialog for a second
				stopWatch.Stop();
				if (stopWatch.ElapsedMilliseconds < 500)
					System.Threading.Thread.Sleep (500);

			}
			catch(Exception ex)
			{
                DataAccessLayer.ExceptionWriter.WriteLogFile(ex);
            }
			finally
			{
				// Hide the progressbar
				if (progressDialog != null)
					progressDialog.Dismiss ();
			}

		}