private async void OnSaveAddTimeEntry(object sender, EventArgs e) { //selectiraniot Task e //var selTask = viewModel.SelectedTask; bool validationError = false; if (string.IsNullOrEmpty(viewModel.Name)) { viewModel.NameError = true; validationError = true; } else { //lblName.TextColor = (Color)Application.Current.Resources["DarkGrayTextColor"]; viewModel.NameError = false; } if (viewModel.SelectedProject == null) { viewModel.ProjectError = true; frmProject.BorderColor = (Color)Application.Current.Resources["RedTextColor"];; cmbProject.WatermarkColor = (Color)Application.Current.Resources["RedTextColor"];; validationError = true; } else { frmProject.BorderColor = (Color)Application.Current.Resources["LightGrayTextColor"];; cmbProject.WatermarkColor = (Color)Application.Current.Resources["LightGrayTextColor"];; viewModel.ProjectError = false; } if (validationError) { return; } viewModel.VisibleLoad = true; viewModel.LoadingMessage = ""; ProjectInsight.Models.Issues.Issue issue = new ProjectInsight.Models.Issues.Issue(); issue.Name = viewModel.Name; issue.Description = viewModel.Description; issue.ProjectAffiliation_Id = viewModel.SelectedProject.Id; issue.UserCreated_Id = Common.CurrentWorkspace.UserID; issue.CreatedDateTimeUTC = DateTime.Now.ToUniversalTime(); issue.UserAssignedBy_Id = Common.CurrentWorkspace.UserID; issue.UserAssignedTo_Id = viewModel.SelectedUser != null ? viewModel.SelectedUser.Id : Common.CurrentWorkspace.UserID; issue.IssueStatusType_Id = viewModel.SelectedIssueStatusType != null ? viewModel.SelectedIssueStatusType.Id : null; issue.IssueType_Id = viewModel.SelectedIssueType != null ? viewModel.SelectedIssueType.Id : null; issue.IssueSeverity_Id = viewModel.SelectedIssueSeverityType != null ? viewModel.SelectedIssueSeverityType.Id : null; issue.IssuePriority_Id = viewModel.SelectedIssuePriorityType != null ? viewModel.SelectedIssuePriorityType.Id : null; //task.SkipProjectScheduleCalculateOnSave = false; //task.ConstraintType = 3; //task.StartDateTimeUTC = viewModel.StartDate; //task.EndDateTimeUTC = viewModel.EndDate; issue.StartDateTimeUserLocal = viewModel.StartDate; issue.EndDateTimeUserLocal = viewModel.EndDate; issue.Id = viewModel.Id; ApiSaveResponse resp = await IssuesService.client.SaveAsync(issue); if (!resp.HasErrors) { var succsave = settings.Set("NewIssue_SelectedProject", viewModel.SelectedProject.Id.ToString()); succsave = settings.Set("NewIssue_SelectedUser", issue.UserAssignedTo_Id.ToString()); Common.Instance.ShowToastMessage("Issue Saved", DoubleResources.SuccessSnackBar); MessagingCenter.Send(this, "IssueAdded", resp.SavedId); Common.RefreshWorkList = true; Common.RefreshProjectsList = true; if (viewModel.Id != null || pId != Guid.Empty) { MessagingCenter.Send(this, "IssueUpdated", resp.SavedId); for (var counter = 1; counter < 2; counter++) { Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]); } await Navigation.PopAsync(); } else { await Navigation.PopToRootAsync(); } } else { if (resp.Errors.Count > 0) { Common.Instance.ShowToastMessage(resp.Errors[0].ErrorMessage, DoubleResources.DangerSnackBar); } else { Common.Instance.ShowToastMessage("Error,check again.", DoubleResources.DangerSnackBar); } } viewModel.VisibleLoad = false; }
async Task ExecuteLoadItemsCommand(Guid?parentId, String ObjectType) { if (IsBusy) { return; } IsBusy = true; bool isFilteredList = true; if ((parentId == null || parentId == Guid.Empty) && ObjectType == null) { isFilteredList = false; } try { Common.Instance.CreateTable <MyWorkItem>(); Items.Clear(); bool refresh = Common.RefreshWorkList; if (LoadLocalContent && !refresh) { //getting from local storage SQLiteConnection connection = Common.Instance.InitializeDatabase(); Common.Instance.CreateTable <MyWorkItem>(); var userWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ObjectType != "Project"); if (userWork == null || userWork.Count() == 0) { LoadLocalContent = false; } else { if (isFilteredList) { var filteredList = userWork.Where(x => (x.ObjectType == ObjectType || ObjectType == "All") && x.ProjectId == parentId); foreach (var item in filteredList) { Items.Add(item); } } else { foreach (var item in userWork) { Items.Add(item); } } } } if (!LoadLocalContent || refresh) { //getting new data MyWork myItems = await UsersService.GetMyWorkAsync(Common.CurrentWorkspace.UserID); Common.Instance.bottomNavigationViewModel.NumberProjectItems = (myItems.Projects == null || Common.Filter.CompanyId != null ? 0 : myItems.Projects.Count()); List <ApiModelBase> items; items = myItems.ItemsInOrder; if (items != null) { foreach (var item in items) { try { if (isFilteredList) { if (!(item.Type == ObjectType || ObjectType == "All")) { continue; } } if (item.Type == "Task") { MyWorkItem newItem = new MyWorkItem(); ProjectInsight.Models.Tasks.Task task = (ProjectInsight.Models.Tasks.Task)item; if (isFilteredList) { if (task.Project_Id == null || task.Project_Id.Value != parentId) { continue; } } if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue) { if (task.Project.Companies != null && task.Project.Companies.Count > 0) { if (!task.Project.Companies.Any(x => x.Id == Common.Filter.CompanyId)) { continue; } } else { continue; } } newItem.Id = task.Id.Value; newItem.Title = task.Name; bool endDateIsPast = false; //string displayDate = string.Empty; string startDate = string.Empty; string endDate = string.Empty; if (task.StartDateTimeUTC.HasValue && task.EndDateTimeUTC.HasValue) { if (task.StartDateTimeUTC.Value.Date == task.EndDateTimeUTC.Value.Date) { startDate = string.Empty; endDate = task.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); } else { startDate = task.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - "; endDate = task.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); } if (task.EndDateTimeUTC.Value.Date < DateTime.Now.Date) { endDateIsPast = true; } } else { if (task.StartDateTimeUTC.HasValue) { startDate = task.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - "; } if (task.EndDateTimeUTC.HasValue) { endDate = task.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); if (task.EndDateTimeUTC.Value.Date < DateTime.Now.Date) { endDateIsPast = true; } } } //newItem.Line2a = displayDate; newItem.Line2s = startDate; newItem.Line2e = endDate; newItem.Line2Color = endDateIsPast ? ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]); if (task.Project != null) { newItem.Line3 = task.Project.ItemNumberFullAndNameDisplayPreference; } //newItem.Line3 = task.ItemNumberFull + " - " + task.Project.Name; newItem.Icon = "item_task.png"; newItem.ItemType = ItemType.Task; newItem.WorkspaceId = Common.CurrentWorkspace.Id; newItem.ProjectId = task.Project_Id != null ? task.Project_Id.Value : Guid.Empty; newItem.ObjectType = task.Type; newItem.TitleColor = "#000000"; Items.Add(newItem); } else if (item.Type == "Issue") { MyWorkItem newItem = new MyWorkItem(); ProjectInsight.Models.Issues.Issue issue = (ProjectInsight.Models.Issues.Issue)item; if (issue.ProjectAffiliation != null) { } if (isFilteredList) { if (issue.ProjectAffiliation_Id == null || issue.ProjectAffiliation_Id.Value != parentId) { continue; } } if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue) { if (issue.ProjectAffiliation.Companies != null && issue.ProjectAffiliation.Companies.Count > 0) { if (!issue.ProjectAffiliation.Companies.Any(x => x.Id == Common.Filter.CompanyId)) { continue; } } else { continue; } } newItem.Id = issue.Id.Value; newItem.Title = issue.Name; bool endDateIsPast = false; //string displayDate = string.Empty; string startDate = string.Empty; string endDate = string.Empty; if (issue.StartDateTimeUTC.HasValue && issue.EndDateTimeUTC.HasValue) { if (issue.StartDateTimeUTC.Value.Date == issue.EndDateTimeUTC.Value.Date) { startDate = string.Empty; endDate = issue.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); } else { startDate = issue.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - "; endDate = issue.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); } if (issue.EndDateTimeUTC.Value.Date < DateTime.Now.Date) { endDateIsPast = true; } } else { if (issue.StartDateTimeUTC.HasValue) { startDate = issue.StartDateTimeUTC.Value.Date.ToString("M/d/yy"); } if (issue.EndDateTimeUTC.HasValue) { endDate = issue.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); if (issue.EndDateTimeUTC.Value.Date < DateTime.Now.Date) { endDateIsPast = true; } } } //newItem.Line2a = displayDate; newItem.Line2s = startDate; //newItem.Line2e = endDate; newItem.Line2Color = endDateIsPast ? ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]); string priority = issue.IssuePriority != null ? issue.IssuePriority.Name : ""; string status = issue.IssueStatusType != null ? issue.IssueStatusType.Name : ""; string separator = " - "; if (String.IsNullOrEmpty(priority)) { separator = ""; } newItem.Line2e = String.Format("{0}{1}{2}", endDate, separator, priority); //newItem.Line3 = String.Format("{0}{1}{2}", prority, separator, status); newItem.Line3 = status; //newItem.Line4 = issue.ItemNumberFull + " - " + issue.ProjectAffiliation.Name; if (issue.ProjectAffiliation != null) { newItem.Line4 = issue.ProjectAffiliation.ItemNumberFullAndNameDisplayPreference; } newItem.Icon = "item_issue.png"; newItem.ItemType = ItemType.Issue; newItem.WorkspaceId = Common.CurrentWorkspace.Id; newItem.ProjectId = issue.ProjectAffiliation_Id != null ? issue.ProjectAffiliation_Id.Value : Guid.Empty; newItem.ObjectType = issue.Type; newItem.TitleColor = "#000000"; Items.Add(newItem); } else if (item.Type == "ToDo") { MyWorkItem newItem = new MyWorkItem(); ProjectInsight.Models.ToDos.ToDo toDo = (ProjectInsight.Models.ToDos.ToDo)item; if (isFilteredList) { if (toDo.ProjectAffiliation_Id == null || toDo.ProjectAffiliation_Id.Value != parentId) { continue; } } if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue) { if (toDo.ProjectAffiliation.Companies != null && toDo.ProjectAffiliation.Companies.Count > 0) { if (!toDo.ProjectAffiliation.Companies.Any(x => x.Id == Common.Filter.CompanyId)) { continue; } } else { continue; } } newItem.Id = toDo.Id.Value; newItem.Title = toDo.Name; bool endDateIsPast = false; //string displayDate = string.Empty; string startDate = string.Empty; string endDate = string.Empty; if (toDo.StartDateTimeUTC.HasValue && toDo.EndDateTimeUTC.HasValue) { if (toDo.StartDateTimeUTC.Value.Date == toDo.EndDateTimeUTC.Value.Date) { startDate = string.Empty; endDate = toDo.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); } else { startDate = toDo.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - "; endDate = toDo.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); } if (toDo.EndDateTimeUTC.Value.Date < DateTime.Now.Date) { endDateIsPast = true; } } else { if (toDo.StartDateTimeUTC.HasValue) { startDate = toDo.StartDateTimeUTC.Value.Date.ToString("M/d/yy"); } if (toDo.EndDateTimeUTC.HasValue) { endDate = toDo.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); if (toDo.EndDateTimeUTC.Value.Date < DateTime.Now.Date) { endDateIsPast = true; } } } //newItem.Line2a = displayDate; newItem.Line2s = startDate; newItem.Line2e = endDate; newItem.Line2Color = endDateIsPast ? ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]); //newItem.Line3 = toDo.ItemNumberFull + " - " + toDo.ProjectAffiliation.Name; if (toDo.ProjectAffiliation != null) { newItem.Line3 = toDo.ProjectAffiliation != null ? toDo.ProjectAffiliation.ItemNumberFullAndNameDisplayPreference : String.Empty; } newItem.Icon = "item_todo.png"; newItem.ItemType = ItemType.Todo; newItem.WorkspaceId = Common.CurrentWorkspace.Id; newItem.ProjectId = toDo.ProjectAffiliation_Id != null ? toDo.ProjectAffiliation_Id.Value : Guid.Empty; newItem.ObjectType = toDo.Type; newItem.TitleColor = "#000000"; Items.Add(newItem); } else if (item.Type == "ApprovalRequest") { if (isFilteredList) { continue; } if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue) { continue; } MyWorkItem newItem = new MyWorkItem(); ProjectInsight.Models.ApprovalRequests.ApprovalRequest approval = (ProjectInsight.Models.ApprovalRequests.ApprovalRequest)item; newItem.Id = approval.Id.Value; newItem.Title = approval.Name; //string Approvers = string.Empty; //if (approval.ApprovalRequestApprovals != null && approval.ApprovalRequestApprovals.Count > 0) //{ // if (approval.ApprovalRequestApprovals.Count > 1) // Approvers = "Approvers: "; // else // Approvers = "Approver: "; // foreach (ApprovalRequestApproval app in approval.ApprovalRequestApprovals) // { // if (app.Approver == null) continue; // string approver = app.Approver.FirstName + " " + app.Approver.LastName + ", "; // Approvers += approver; // } // Approvers = Approvers.Substring(0, Approvers.Length - 2); //} //newItem.Line2s = Approvers; string deadLine = string.Empty; if (approval.DeadlineDateTimeUTC != null) { //if (approval.DeadlineDateTimeUTC.Value.Date < DateTime.Now.Date) // newItem.Line2Color =ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]); //else // newItem.Line2Color = ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]); deadLine = approval.DeadlineDateTimeUTC.Value.Date.ToString("M/d/yy"); } //Not Active, Pending, Approved, Denied switch (approval.ApprovalRequestStateType.Value) { case 0: newItem.Line3 = "Not Active "; break; case 1: newItem.Line3 = "Pending "; break; case 2: newItem.Line3 = "Approved "; break; case 3: newItem.Line3 = "Denied "; break; } newItem.Line2s = deadLine; newItem.Line3 = ((Enums.ApprovalRequestStateType)approval.ApprovalRequestStateType).ToString(); newItem.Icon = "item_approval_request.png"; newItem.ItemType = ItemType.ApprovalRequests; newItem.WorkspaceId = Common.CurrentWorkspace.Id; newItem.ProjectId = Guid.Empty; newItem.ObjectType = approval.Type; newItem.TitleColor = "#000000"; Items.Add(newItem); } else if (item.Type == "TimeSheet") { MyWorkItem newItem = new MyWorkItem(); ProjectInsight.Models.TimeAndExpense.TimeSheet timeSheet = (ProjectInsight.Models.TimeAndExpense.TimeSheet)item; if (isFilteredList) { continue; } if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue) { continue; } newItem.Id = timeSheet.Id.Value; newItem.Title = timeSheet.Name; if (timeSheet.StartDate.HasValue) { newItem.Line2s = "Dates: " + timeSheet.StartDate.Value.ToString("M/d/yy") + " - "; } if (timeSheet.EndDate.HasValue) { newItem.Line2e = timeSheet.EndDate.Value.ToString("M/d/yy"); } bool endDateIsPast = false; newItem.Line2Color = endDateIsPast ? ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]); if (!string.IsNullOrEmpty(timeSheet.Status)) { newItem.Line3 = "Status: " + timeSheet.Status; } newItem.Icon = "item_timesheet.png"; newItem.ItemType = ItemType.TimeSheet; newItem.WorkspaceId = Common.CurrentWorkspace.Id; newItem.ProjectId = Guid.Empty; newItem.ObjectType = timeSheet.Type; newItem.TitleColor = "#000000"; Items.Add(newItem); } else { } } catch (Exception ex) { } } } if (!isFilteredList) { var listWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ObjectType != "Project"); if (listWork != null && listWork.ToList().Count > 0) { foreach (var item in listWork) { Common.Instance._sqlconnection.Delete(item); } } if (Items != null) { foreach (MyWorkItem item in Items) { Common.Instance._sqlconnection.Insert(item); } } } } if (Items == null || Items.Count == 0) { IsItemsEmpty = true; } else { IsItemsEmpty = false; } if (!isFilteredList) { Common.Instance.bottomNavigationViewModel.NumberWorkListItems = (Items == null ? 0 : Items.Count()); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
private async Task <bool> GetItem(Guid ItemId) { try { ProjectInsight.Models.Issues.Issue issue = await IssuesService.client.GetAsync(ItemId, modelProperties : new ProjectInsight.Models.Base.ModelProperties("default,Description,StartDateTimeUTC,EndDateTimeUTC,IssueType,IssueStatusType,IssueSeverity,IssuePriority,FoundBy,UserAssignedTo,UserAssignedTo_Id,FoundDateTimeUTC,ProjectResolution,ProjectResolution_Id,ProjectAffiliation_Id,ProjectAffiliation;Project:ItemNumberFullAndNameDisplayPreference")); viewModel.Name = issue.Name; if (!string.IsNullOrEmpty(issue.Description)) { viewModel.Description = issue.Description; } if (issue.StartDateTimeUTC.HasValue) { viewModel.StartDate = issue.StartDateTimeUTC.Value; } if (issue.EndDateTimeUTC.HasValue) { viewModel.EndDate = issue.EndDateTimeUTC.Value; } if (viewModel.Projects != null && issue.ProjectAffiliation_Id != null) { viewModel.SelectedProject = viewModel.Projects.Where(x => x.Id == issue.ProjectAffiliation_Id).FirstOrDefault(); } if (viewModel.Users != null && issue.UserAssignedTo_Id != null) { viewModel.SelectedUser = viewModel.Users.Where(x => x.Id == issue.UserAssignedTo_Id).FirstOrDefault(); } if (issue.IssueStatusType != null) { viewModel.SelectedIssueStatusType = issue.IssueStatusType; } if (issue.IssueType != null) { viewModel.SelectedIssueType = issue.IssueType; } if (issue.IssueSeverity != null) { viewModel.SelectedIssueSeverityType = issue.IssueSeverity; } if (issue.IssuePriority != null) { viewModel.SelectedIssuePriorityType = issue.IssuePriority; } viewModel.Id = ItemId; } catch (Exception ex) { //AuthenticationService.Logout(); return(false); } return(true); }