示例#1
0
 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);
                }
            }
        }
示例#4
0
        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);
        }