IEnumerator UpdateClients(ProjectListElement element, Client previous) { LoadAlert.Instance.StartLoad("Updating Clients...", null, -1); List <Client> updates = new List <Client>(); previous.ProjectCount--; element.Project.Client.ProjectCount++; updates.Add(previous); updates.Add(element.Project.Client); Task updateClient = updates.SaveAllAsync(); while (!updateClient.IsCompleted) { yield return(null); } LoadAlert.Instance.Done(); if (updateClient.Exception == null) { ProjectList.RemoveListElement(element); } }
void AddProject(Project project) { ProjectListElement element = (ProjectListElement) GameObject.Instantiate(ProjectPrefab, Vector3.zero, Quaternion.identity); element.Setup(project); ProjectList.AddListElement(element); }
IEnumerator DeleteCoroutine(ProjectListElement element) { LoadAlert.Instance.StartLoad("Removing Project...", null, -1); Client client = element.Project.Client; Database.Instance.RemoveProject(element.Project); Task task = element.Project.DeleteAsync(); while (!task.IsCompleted) { yield return(null); } if (task.Exception != null) { LoadAlert.Instance.Done(); //display alert here? } else { ProjectList.RemoveListElement(element); client.ProjectCount--; task = client.SaveAsync(); while (!task.IsCompleted) { yield return(null); } LoadAlert.Instance.Done(); } }
void DeleteProject(ProjectListElement element) { StartCoroutine(DeleteCoroutine(element)); }
void ProjectSwitchedClients(ProjectListElement element, Client previous) { StartCoroutine(UpdateClients(element, previous)); }