public static async Task <ApiSaveResponse> Save(ProjectInsight.Models.Projects.Project model) { try { return(await client.SaveAsync(model)); } catch (Exception ex) { //AuthenticationService.Logout(); return(null); } }
async Task ExecuteLoadItemsCommand() { if (IsBusy) { return; } IsBusy = true; try { Common.Instance.CreateTable <MyWorkItem>(); Projects.Clear(); bool refresh = Common.RefreshProjectsList; if (LoadLocalContent && !refresh) { //getting from local storage SQLiteConnection connection = Common.Instance.InitializeDatabase(); Common.Instance.CreateTable <MyWorkItem>(); List <MyWorkItem> userWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ObjectType == "Project").OrderByDescending(x => x.IsActive).ToList(); if (userWork == null || userWork.Count == 0) { LoadLocalContent = false; } else { var orderedUserWork = GroupProjectsByStatus(userWork); foreach (var item in orderedUserWork) { Projects.Add(item); } } } if (!LoadLocalContent || refresh) { //getting new data //Clear local storage 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); } } MyWork myItems = await UsersService.GetMyWorkAsync(Common.CurrentWorkspace.UserID); //MyWork myItems = await UsersService.GetMyProjectsAsync(Common.CurrentWorkspace.UserID); if (myItems.Projects != null) { List <MyWorkItem> MyProjects = new List <MyWorkItem>(); foreach (var item in myItems.Projects) { try { if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue) { if (item.Companies != null && item.Companies.Count > 0) { if (!item.Companies.Any(x => x.Id == Common.Filter.CompanyId)) { continue; } } else { continue; } } ProjectInsight.Models.Projects.Project project = (ProjectInsight.Models.Projects.Project)item; MyWorkItem newItem = new MyWorkItem(); newItem.Id = project.Id.Value; newItem.Title = project.ItemNumberFullAndNameDisplayPreference; // project.ItemNumberFull + " - " + project.Name; bool endDateIsPast = false; //string displayDate = string.Empty; string startDate = string.Empty; string endDate = string.Empty; if (project.StartDateTimeUTC.HasValue && project.EndDateTimeUTC.HasValue) { if (project.StartDateTimeUTC.Value.Date == project.EndDateTimeUTC.Value.Date) { startDate = string.Empty; endDate = project.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); } else { startDate = project.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - "; endDate = project.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); } if (project.EndDateTimeUTC.Value.Date < DateTime.Now.Date) { endDateIsPast = true; } } else { if (project.StartDateTimeUTC.HasValue) { startDate = project.StartDateTimeUTC.Value.Date.ToString("M/d/yy"); } if (project.EndDateTimeUTC.HasValue) { endDate = project.EndDateTimeUTC.Value.Date.ToString("M/d/yy"); if (project.EndDateTimeUTC.Value.Date < DateTime.Now.Date) { endDateIsPast = true; } } } //newItem.Line2a = displayDate; newItem.Line2s = startDate; newItem.Line2e = endDate; newItem.Line2Color = endDateIsPast ? ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]); newItem.Line3 = project.ProjectStatus != null ? project.ProjectStatus.Name : ""; newItem.Line4 = project.PrimaryProjectManager != null ? project.PrimaryProjectManager.FirstName + " " + project.PrimaryProjectManager.LastName : ""; newItem.Icon = "item_project.png"; newItem.ItemType = ItemType.Projects; newItem.Url = item.UrlFull; newItem.WorkspaceId = Common.CurrentWorkspace.Id; newItem.ProjectId = Guid.Empty; newItem.ObjectType = project.Type; newItem.isItem = true; //string color = ExtensionMethods.GetHexString((Color)Application.Current.Resources["BlackTextColor"]); newItem.TitleColor = ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]); // Remarks: // Possible Values: 0 - Active 1 - Archive 2 - Planning 3 - Template 4 - Project // Baseline 5 - To Be Deleted 6 - Change Order //newItem.ProjectState = project.ProjectState ?? 0; newItem.IsActive = project.ProjectStatus != null ? project.ProjectStatus.IsActive.Value : false; var userWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ProjectId == project.Id); if (userWork != null && userWork.Count() > 0) { newItem.TasksCount = userWork.Count(); } MyProjects.Add(newItem); } catch (Exception ex) { } } var orderedUserWork = GroupProjectsByStatus(MyProjects.OrderByDescending(x => x.IsActive).ToList()); foreach (var item in orderedUserWork) { Projects.Add(item); Common.Instance._sqlconnection.Insert(item); } } } if (Projects == null || Projects.Count == 0) { IsProjectsEmpty = true; } else { IsProjectsEmpty = false; } Common.Instance.bottomNavigationViewModel.NumberProjectItems = (Projects == null ? 0 : Projects.Where(x => x.isItem).Count()); } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
private async void OnSaveAddTimeEntry(object sender, EventArgs e) { //selectiraniot Task e //var selTask = viewModel.SelectedTask; if (string.IsNullOrEmpty(viewModel.Name)) { viewModel.NameError = true; //lblName.TextColor = Color.DarkRed; return; } else { //lblName.TextColor = (Color)Application.Current.Resources["DarkGrayTextColor"]; viewModel.NameError = false; } ProjectInsight.Models.Projects.Project project = new ProjectInsight.Models.Projects.Project(); project.Name = viewModel.Name; project.Description = viewModel.Description; project.ScheduleStartDate = viewModel.StartDate; if (viewModel.SelectedType != null) { project.ProjectType_Id = viewModel.SelectedType.Id; } project.ProjectStatus_Id = viewModel.SelectedStatus.Id; project.UserCreated_Id = Common.CurrentWorkspace.UserID; project.CreatedDateTimeUTC = DateTime.Now.ToUniversalTime(); //TODO we need to create project without itemcontainer_id //project.ItemContainer_Id = new Guid("49eeed111c7b45cc8bd6347c54b7f1f5"); //List<ProjectInsight.Models.Folders.Folder> folders = DocumentsService.GetFoldersByContainer(parentId); //Folder docFolder = folders.Where(x => x.Name == "Documents").FirstOrDefault(); //if (docFolder != null) //{ // parentId = docFolder.Id.Value; //} //project.Color = viewModel.SelectedColor; ApiSaveResponse resp = await ProjectsService.Save(project); if (!resp.HasErrors) { Common.RefreshProjectsList = true; Common.Instance.ShowToastMessage("Project Saved", DoubleResources.SuccessSnackBar); MessagingCenter.Send(this, "ProjectAdded", resp.SavedId); if (ReturnToPreviousPage) { await Navigation.PopAsync(); } else { await Navigation.PopToRootAsync(); } } else { if (resp.Errors != null && resp.Errors.Count > 0) { Common.Instance.ShowToastMessage(resp.Errors[0].ErrorMessage, DoubleResources.DangerSnackBar); } else { Common.Instance.ShowToastMessage("Error,check again.", DoubleResources.DangerSnackBar); } } }
private async Task <bool> GetProject(Guid projectId) { try { project = await ProjectsService.GetProject(projectId); if (project != null) { var userWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ProjectId == project.Id); if (userWork != null && userWork.Count() > 0) { lblProjectItems.Text = string.Format("Work ({0})", userWork.Count()); slProjectItems.IsVisible = true; } //check permissions to view all tasks //bool userHasEditTaskPermissions = project.UserHasEditTaskPermissions(Common.CurrentWorkspace.UserID); bool userHasEditTaskPermissions = false; if (project.ProjectResources != null) { foreach (ProjectInsight.Models.Projects.ProjectResource r in project.ProjectResources) { if ( ( (r.IsProjectScheduler.HasValue && r.IsProjectScheduler.Value == true) || (r.IsProjectManager.HasValue && r.IsProjectManager.Value == true) ) && (r.User_Id.HasValue && r.User_Id.Value == Common.CurrentWorkspace.UserID) ) { userHasEditTaskPermissions = true; } } } var item = new ProjectDetailsViewModel { Id = project.Id.ToString(), Title = project.ItemNumberFullAndNameDisplayPreference, WorkPercentComplete = project.WorkPercentComplete.Value, Status = project.ProjectStatus != null ? project.ProjectStatus.Name : "", TasksCount = project.TaskCount ?? 0, UserHasEditTaskPermissions = userHasEditTaskPermissions, RefreshControls = true }; //TODO IssuesCount property needed on Project model try { var itemCounts = await ProjectsService.client.GetProjectItemCountsAsync(project.Id.Value); if (itemCounts != null) { item.IssuesCount = itemCounts.IssueCount.Value; item.TasksCount = itemCounts.TaskCount.Value; } //List<ProjectInsight.Models.Issues.Issue> issues = await IssuesService.client.GetByProjectAsync(project.Id.Value); //item.IssuesCount = issues == null ? 0 : issues.Count(); } catch (Exception ex) { } item.Description = System.Text.RegularExpressions.Regex.Replace(project.Description, "<.*?>", String.Empty); if (project.ProjectStatus != null) { if (string.IsNullOrEmpty(project.ProjectStatus.ChartColor)) { item.StatusColor = ProjectInsightMobile.Helpers.ExtensionMethods.GetHexString((Color)Application.Current.Resources["LightBackgroundColor"]); item.StatusFontColor = ProjectInsightMobile.Helpers.ExtensionMethods.GetHexString((Color)Application.Current.Resources["DarkGrayTextColor"]); } else { item.StatusColor = project.ProjectStatus.ChartColor; item.StatusFontColor = ProjectInsightMobile.Helpers.ExtensionMethods.GetHexString((Color)Application.Current.Resources["WhiteTextColor"]); } } string percentComplete = "0"; if (project.WorkPercentComplete != null) { percentComplete = project.WorkPercentComplete.Value.ToString(); } item.Duration = project.DurationString; item.Duration = String.Format("{0} ({1}% Complete)", project.DurationString, percentComplete); if (project.StartDateTimeUserLocal != null) { item.StartDate = project.StartDateTimeUserLocal.Value; } if (project.EndDateTimeUserLocal != null) { item.EndDate = project.EndDateTimeUserLocal.Value; } item.Description = item.Description.Replace("<img ", "<img style='max-width: 100%;' "); viewModel = item; BindingContext = viewModel; } } catch (Exception ex) { //AuthenticationService.Logout(); return(false); } return(true); }