public void Initialize()
        {
            var context = new Mock<IContextAware>();

            var view = new Mock<IProjectView>();
            {
                view.SetupSet(v => v.Model = It.IsAny<ProjectModel>())
                    .Verifiable();
            }

            var parameter = new ProjectParameter(context.Object);

            var projectLink = new Mock<ILinkToProjects>();
            Func<string, IDisposable> func = s => new MockDisposable();

            var command = new CloseProjectCommand(projectLink.Object, func);
            var container = new Mock<IDependencyInjectionProxy>();
            {
                container.Setup(c => c.Resolve<IContextAware>())
                    .Returns(context.Object);
                container.Setup(c => c.Resolve<CloseProjectCommand>())
                    .Returns(command);
            }

            var presenter = new ProjectPresenter(container.Object);
            ((IPresenter)presenter).Initialize(view.Object, parameter);

            Assert.AreSame(view.Object, presenter.View);
            Assert.AreSame(parameter, presenter.Parameter);
            view.VerifySet(v => v.Model = It.IsAny<ProjectModel>(), Times.Once());
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="FrmXtraAccountingObjectDetail"/> class.
 /// </summary>
 public FrmAllProjectDetail()
 {
     InitializeComponent();
     _projectPresenter           = new ProjectPresenter(this);
     _projectsPresenter          = new ProjectsPresenter(this);
     _banksPresenter             = new BanksPresenter(this);
     _accountingObjectsPresenter = new AccountingObjectsPresenter(this);
 }
Exemple #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FrmXtraAccountingObjectDetail"/> class.
 /// </summary>
 public FrmProjectDetail()
 {
     InitializeComponent();
     _projectPresenter  = new ProjectPresenter(this);
     _projectsPresenter = new ProjectsPresenter(this);
     //_banksPresenter = new BanksPresenter(this);
     this.Load += new System.EventHandler(this.FrmXtraRegister_Load);
     //_accountingObjectsPresenter = new AccountingObjectsPresenter(this);
 }
Exemple #4
0
        public ProjectPresenter InitProjectPresenter()
        {
            MainForm         view      = MainPresenter.Instance.View;
            ProjectPresenter presenter = ProjectPresenter.Instance;

            presenter.View = view;
            presenter.Init();
            return(presenter);
        }
        public FClients(IClientService clientService, IContactService contactService, IProjectService projectService, FAddClient fAddClient, FaddProject faddProject, FUpdateProject fUpdateProject, FAddContact fAddContact, FUpdateContact fUpdateContact)
        {
            InitializeComponent();

            clientPresenter  = new ClientPresenter(this, clientService);
            contactPresenter = new ContactPresenter(this, contactService);
            projectPresenter = new ProjectPresenter(this, projectService);
            FAddClient       = fAddClient;
            FaddProject      = faddProject;
            FUpdateProject   = fUpdateProject;
            FAddContact      = fAddContact;
            FUpdateContact   = fUpdateContact;
        }
        public void AddNew()
        {
            mock.Mockery mockery = new mock.Mockery();
            IProjectView mockView = this.GetMockView_AddNew(mockery);

            ProjectPresenter p = new ProjectPresenter(mockView);
            p.AddNew(null, null);

            Assert.That(this.dv.CurrentMode, Is.EqualTo(DetailsViewMode.Insert),
                "Details View should be in insert mode");
            Assert.That(this.dv.Visible, Is.EqualTo(true),"Details View should be visible");

            mockery.VerifyAllExpectationsHaveBeenMet();
        }
        public void ItemCommand_Edit()
        {
            mock.Mockery mockery = new mock.Mockery();
            IProjectView mockView = (IProjectView)mockery.NewMock(typeof(IProjectView));

            DetailsViewCommandEventArgs e = this.GetDetailsViewCommandEventArgs(UpdateType.Update);
            // DetailsView dv = this.GetProjectDetails(UpdateType.Update);
            mock.Expect.Exactly(2).On(mockView).GetProperty("DataPath").Will(mock.Return.Value(this._DataPath));
            mock.Expect.Once.On(mockView).Method("DetailsFocus");

            ProjectPresenter presenter = new ProjectPresenter(mockView);
            presenter.ItemCommand(null, e);

            mockery.VerifyAllExpectationsHaveBeenMet();
        }
        public ActionResult DeleteProjectPerson(ProjectPresenter presenter, string projectPersonId)
        {
            var projectPersonList = presenter.Project.ProjectPersons.FirstOrDefault(e => e.ApplicationEntityState != ApplicationEntityState.Deleted && e.PersonID == Convert.ToInt32(projectPersonId, CultureInfo.CurrentCulture));
            if (projectPersonList != null)
            {
                if (projectPersonList.ProjectPersonID == default(int))
                {
                    presenter.Project.ProjectPersons.Remove(projectPersonList);
                }
                else
                {
                    projectPersonList.ApplicationEntityState = ApplicationEntityState.Deleted;
                }
            }

            return this.PartialView("_StackHolderDetails", presenter);
        }
 public ProjectView()
 {
     _presenter = new ProjectPresenter(this);
 }
 /// <summary>
 /// views the project details.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 private void RetrieveHistory(ProjectPresenter presenter)
 {
     var historyListItems = this.projectService.RetrieveHistory(Convert.ToInt32(presenter.Project.ProjectID, CultureInfo.CurrentCulture));
     if (historyListItems != null && historyListItems.Count > 0)
     {
         AssignHistoryItems(presenter, historyListItems);
     }
 }
 /// <summary>
 /// Assigns the estimation hour categories.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 private static void AssignEstimationHourCategories(ProjectPresenter presenter)
 {
     (from estimationHour in presenter.Project.EstimatedHours
      join estimationCategory in presenter.EstimationCategoryList on estimationHour.EstimationCategoryID equals estimationCategory.ID
      select MapEstimationHour(estimationHour, estimationCategory)).ToList();
 }
        /// <summary>
        /// Function to assign history items.
        /// </summary>
        /// <param name="presenter">Presenter details</param>
        /// <param name="historyListItems">Item details</param>
        private static void AssignHistoryItems(ProjectPresenter presenter, IDictionary<string, IEnumerable<HistoryListItem>> historyListItems)
        {
            if (historyListItems.ContainsKey(RiskKeyValue))
            {
                presenter.AssignRiskHistoryList(historyListItems[RiskKeyValue].ToList());
            }

            if (historyListItems.ContainsKey(CommentsKeyValue))
            {
                presenter.AssignCommentsHistoryList(historyListItems[CommentsKeyValue].ToList());
            }
        }
        public ActionResult SubmitStackHolderDetails(ProjectPresenter presenter)
        {
            var stakeHolderList = new List<StackHolderInfo>();
            if (presenter != null)
            {
                presenter.StackHolder.ModifiedByDeveloperID = SessionData.Instance.UserInfo.Developer.DeveloperID;
                this.projectStakeHolderService.InsertOrUpdateStackHolder(presenter.StackHolder);
                var list = this.projectStakeHolderService.RetrieveStackHolderList(SessionData.Instance.UserInfo.Developer.DeveloperID);

                foreach (var item in list)
                {
                    var stakeHolderData = new StackHolderInfo();
                    stakeHolderData.DeveloperID = item.StakeHolderID;
                    stakeHolderData.DeveloperName = item.FirstName;
                    stakeHolderList.Add(stakeHolderData);
                }
            }

            return new JsonResult { Data = stakeHolderList, MaxJsonLength = int.MaxValue };
        }
        private static void ValidateProjectDetails(ProjectPresenter presenter)
        {
            var regFormatAlphanumeric = new Regex(RegularExpressionAlphanumeric);
            if (!string.IsNullOrEmpty(presenter.Project.MailRecipient))
            {
                var regFormatEmail = new Regex(RegularExpressionEmail);
                 var regFormatEmailSeparation = new Regex(RegularExpressionEmailSeparated);
                char[] delimiters = new[] { ',', ';', ' ' }; 
                var splittedArray = presenter.Project.MailRecipient.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
                foreach (var email in splittedArray)
                {
                    if (!string.IsNullOrWhiteSpace(email))
                    {
                        if (!regFormatEmail.IsMatch(email.Trim()))
                        {
                            presenter.ValidationErrors.Add(Recipient, Resources.ErrorEmailValidStackHolder);
                            break;
                        }
                    }
                }

                if (!presenter.ValidationErrors.ContainsKey(Recipient))
                {
                    if (!regFormatEmailSeparation.IsMatch(presenter.Project.MailRecipient))
                    {
                        presenter.ValidationErrors.Add(Recipient, Resources.ErrorEmailSeparator);
                    }
                }
            }

            if (string.IsNullOrEmpty(presenter.Project.Name) || string.IsNullOrWhiteSpace(presenter.Project.Name))
            {
                presenter.ValidationErrors.Add(Name, Resources.NameErrorMessage);
            }
            else if (!regFormatAlphanumeric.IsMatch(presenter.Project.Name))
            {
                presenter.ValidationErrors.Add(Name, Resources.NameFormatErrorMessageAlphanumeric);
            }

            if (presenter.Project.Priority == 0)
            {
                presenter.ValidationErrors.Add(Priority, Resources.PriorityErrorNumberMessage);
            }

            if (presenter.Project.ClientID == default(int))
            {
                presenter.ValidationErrors.Add(Client, Resources.ClientErrorMessage);
            }

            if (presenter.Project.Status == default(byte))
            {
                presenter.ValidationErrors.Add(Status, Resources.StatusErrorMessage);
            }
            else if (presenter.Project.Status == CompletedStatus && !presenter.Project.EndDate.HasValue)
            {
                presenter.ValidationErrors.Add(EndDate, Resources.EndDateCompulsory);
            }

            if (presenter.Project.Status != PinelineStatus && !presenter.Project.StartDate.HasValue)
            {
                presenter.ValidationErrors.Add(StartDate, Resources.StartDateCompulsory);
            }

            if (presenter.Project.StartDate.HasValue && !presenter.Project.StartDate.Value.IsValidDatabaseDate())
            {
                presenter.ValidationErrors.Add(StartDate, Resources.StartDateInvalidErrorMessage);
            }

            if (presenter.Project.StartDate.HasValue && presenter.Project.EndDate.HasValue && presenter.Project.StartDate.Value > presenter.Project.EndDate.Value)
            {
                presenter.ValidationErrors.Add(EndDate, Resources.EndDateInvalidErrorMessage);
            }

            if (presenter.Project.CompletedPercent.HasValue && presenter.Project.CompletedPercent > MaxPercentageValue)
            {
                presenter.ValidationErrors.Add(PercentCompletion, Resources.PercentCompletionErrorMessage);
            }

            if (presenter.Project.PrimaryPOCDeveloperID == default(int))
            {
                presenter.ValidationErrors.Add(PrimaryPoc, Resources.PrimaryErrorMessage);
            }

            if (string.IsNullOrWhiteSpace(presenter.Project.SharepointLink))
            {
                presenter.ValidationErrors.Add(Repository, Resources.EmptyRepositoryErrorMessage);
            }

            if (presenter.Project.AtRiskFlag && string.IsNullOrWhiteSpace(presenter.Project.Risk))
            {
                presenter.ValidationErrors.Add(RiskData, Resources.RiskValue);
            }
        }
        /// <summary>
        /// updates project.
        /// </summary>
        /// <param name="projectId">The project identifier.</param>
        /// <param name="includeInactive">The include inactive.</param>
        /// <returns>
        /// Add Edit project view
        /// </returns>
        public ActionResult Update(string projectId, string includeInactive)
        {
            this.AddBreadcrumbItem(Resources.ManageProject, Url.ProjectsAction());
            this.AddBreadcrumbItem(Resources.EditProject, string.Empty);
            ProjectPresenter presenter = new ProjectPresenter();

            if (!string.IsNullOrEmpty(includeInactive))
            {
                presenter.IncludeInactive = Convert.ToBoolean(includeInactive, CultureInfo.CurrentCulture);
            }

            presenter.IsEdit = true;
            this.AssignProjectDetails(presenter, projectId);

            var projectPersons = this.projectStakeHolderService.RetrieveProjectPersonList(SessionData.Instance.UserInfo.Developer.DeveloperID).Where(p => p.ProjectID == presenter.Project.ProjectID).ToList();
            this.AssignPersonsList(presenter, projectPersons);

            this.RetrieveHistory(presenter);
            presenter.AssignArtifacts(this.lookupService.RetrieveProjectArtifactList(presenter.Project.ProjectID, SessionData.Instance.UserInfo.Developer.DeveloperID));
            presenter.OldRiskValue = presenter.Project.Risk;
            int nodeIndex = 0;
            var groupedList = presenter.Artifacts.OrderBy(a => a.Squence)
                             .GroupBy(u => u.FunctionalArea)
                             .Select(grp => new ArtifactFillListItem { FunctionalArea = grp.Key, Items = grp.ToList() })
                             .ToList();

            groupedList.ForEach(g => { g.NodeIndex = nodeIndex; nodeIndex++; g.IsSelected = g.Items.All(i => i.IsSelected.Value); });
            presenter.AssignArtifacts(groupedList);
            this.AssignMailRecipients(presenter);
            return this.View("InsertOrUpdate", presenter);
        }
        /// <summary>
        /// view project.
        /// </summary>
        /// <param name="projectId">The project identifier.</param>
        /// <returns>
        /// View Edit project view
        /// </returns>
        public ActionResult ViewProject(string projectId)
        {
            this.AddBreadcrumbItem(Resources.ManageProject, Url.ProjectsAction());
            this.AddBreadcrumbItem(Resources.ProjectDashboard, string.Empty);
            ProjectPresenter presenter = new ProjectPresenter();
            presenter.Project = this.projectService.RetrieveById(Convert.ToInt32(projectId, CultureInfo.CurrentCulture), SessionData.Instance.UserInfo.Developer.DeveloperID);
            this.ViewProjectDetails(presenter);
            this.RetrieveHistory(presenter);
            presenter.AssignArtifacts(this.lookupService.RetrieveProjectArtifactList(presenter.Project.ProjectID, SessionData.Instance.UserInfo.Developer.DeveloperID).Where(g => g.IsSelected == true).ToList());
            int nodeIndex = 0;
            var groupedList = presenter.Artifacts.OrderBy(a => a.Squence)
                             .GroupBy(u => u.FunctionalArea)
                             .Select(grp => new ArtifactFillListItem { FunctionalArea = grp.Key, Items = grp.Where(g => g.IsSelected == true).ToList() })
                             .ToList();

            groupedList.ForEach(g => { g.NodeIndex = nodeIndex; nodeIndex++; g.IsSelected = g.Items.All(i => i.IsSelected.Value); });
            presenter.AssignArtifacts(groupedList);
            return this.View("ViewProject", presenter);
        }
        /// <summary>
        /// Maps the project list item to project person.
        /// </summary>
        /// <param name="projectPersonlistItem">The project person list item.</param>
        /// <param name="presenter">The presenter.</param>
        /// <returns>person detail</returns>
        private ProjectPerson MapProjectListItemToProjectPerson(ProjectPersonListItem projectPersonlistItem, ProjectPresenter presenter)
        {
            ProjectPerson person = new ProjectPerson();
            var selectedRole = projectPersonlistItem.RoleID.HasValue ? presenter.Roles.FirstOrDefault(e => e.ID == projectPersonlistItem.RoleID) : new LookupItem { ID = -1 };
            person.Email = projectPersonlistItem.Email;
            person.Skype = projectPersonlistItem.Skype;
            person.ApplicationEntityState = ApplicationEntityState.Modified;
            person.ModifiedByDeveloperID = projectPersonlistItem.ModifiedByDeveloperID;
            person.ModifiedDate = DateTime.Now;
            person.Name = projectPersonlistItem.Name;
            person.PersonID = projectPersonlistItem.StakeHolderID;
            person.PersonType = projectPersonlistItem.PersonType;
            person.PointOfContactFlag = projectPersonlistItem.PointOfContactFlag;
            person.ProjectID = projectPersonlistItem.ProjectID;
            person.RoleID = selectedRole.ID;
            person.RoleName = selectedRole.Name;
            person.ProjectPersonID = projectPersonlistItem.ProjectPersonID;
            this.MapDeveloperImage(projectPersonlistItem, person);

            return person;
        }
        /// <summary>
        /// inserts project.
        /// </summary>
        /// <returns>
        /// Add Edit project view
        /// </returns>
        public ActionResult Insert()
        {
            this.AddBreadcrumbItem(Resources.ManageProject, Url.ProjectsAction());
            this.AddBreadcrumbItem(Resources.AddProject, string.Empty);
            ProjectPresenter presenter = new ProjectPresenter();
            presenter.IsEdit = false;
            presenter.Project = new Project();
            this.AssignProjectDetails(presenter, null);
            presenter.AssignArtifacts(this.lookupService.RetrieveProjectArtifactList(null, SessionData.Instance.UserInfo.Developer.DeveloperID));

            int nodeIndex = 0;
            var groupedList = presenter.Artifacts.OrderBy(a => a.Squence)
                             .GroupBy(u => u.FunctionalArea)
                             .Select(grp => new ArtifactFillListItem { FunctionalArea = grp.Key, Items = grp.ToList() })
                             .ToList();

            groupedList.ForEach(g => { g.NodeIndex = nodeIndex; g.IsSelected = true; nodeIndex++; g.Items.ForEach(i => i.IsSelected = true); });
            presenter.AssignArtifacts(groupedList);
            this.AssignMailRecipients(presenter);
            return this.View("InsertOrUpdate", presenter);
        }
 /// <summary>
 /// Assigns the persons list.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 /// <param name="projectPerson">The project person.</param>
 private void AssignPersonsList(ProjectPresenter presenter, IList<ProjectPersonListItem> projectPerson)
 {
     projectPerson.ForEach(p => presenter.Project.ProjectPersons.Add(this.MapProjectListItemToProjectPerson(p, presenter)));
 }
 /// <summary>
 /// Maps the onsite developer details.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 /// <param name="selectedHolderType">Type of the selected holder.</param>
 /// <param name="selectedPersonId">The selected person identifier.</param>
 private void AssignOnsiteDeveloperDetails(ProjectPresenter presenter, string selectedHolderType, string selectedPersonId)
 {
     var projectPerson = presenter.Project.ProjectPersons.Where(a => a.PersonID == Convert.ToInt32(selectedPersonId) && a.PersonType == Persontype.OnSiteTeam).FirstOrDefault();
     var selectedRole = presenter.Roles.FirstOrDefault(e => e.ID == presenter.Role.ID);
     var developerItem = this.developerService.RetrieveById(Convert.ToInt32(selectedPersonId));
     if (projectPerson != null)
     {
         UpdateOnsiteDeveloper(presenter, selectedPersonId, projectPerson, selectedRole, developerItem);
     }
     else
     {
         AddOnsiteDeveloper(presenter, selectedPersonId, projectPerson, selectedRole, developerItem);
     }
 }
 /// <summary>
 /// Maps the stack holder details.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 /// <param name="selectedHolderType">Type of the selected holder.</param>
 /// <param name="selectedPersonId">The selected person identifier.</param>
 private void AssignStackHolderDetails(ProjectPresenter presenter, string selectedHolderType, string selectedPersonId)
 {
     var stackHolderItem = this.projectStakeHolderService.RetrieveStackHolderById(Convert.ToInt32(selectedPersonId));
     var projectPerson = presenter.Project.ProjectPersons.Where(a => a.PersonID == Convert.ToInt32(selectedPersonId) && a.PersonType == Persontype.StakeHolder).FirstOrDefault();
     var selectedRole = presenter.Roles.FirstOrDefault(e => e.ID == presenter.Role.ID);
     if (projectPerson != null)
     {
         UpdateStackHolder(presenter, selectedPersonId, stackHolderItem, projectPerson, selectedRole);
     }
     else
     {
         AddStackHolder(presenter, selectedPersonId, stackHolderItem, projectPerson, selectedRole);
     }
 }
        public ActionResult ValidateErrorDetails(ProjectPresenter presenter, string projectStatusId)
         {
            ModelState.Clear();
            if (presenter != null)
            {
                if (presenter.Project.Status == 0 && projectStatusId != "undefined" && projectStatusId != string.Empty)
                {
                    presenter.Project.Status = Convert.ToByte(projectStatusId);
                }

                ValidateProjectDetails(presenter);
                var errors = this.projectService.Validate(presenter.Project).Where(error => !error.FieldName.Equals("Assignments")).ToList();
                presenter.ValidationErrors.Append(errors);
            }

            return new JsonResult { Data = presenter, MaxJsonLength = int.MaxValue };
        }
        public ActionResult ValidateIsInactive(ProjectPresenter presenter)
        {
            ModelState.Clear();
            if (presenter != null)
            {
                var errorList = this.projectService.Validate(presenter.Project);
                var reslutErrorList = errorList.Where(error => error.FieldName.Equals("Assignments")).ToList();
                if (reslutErrorList.Count > 0)
                {
                    return this.Json("true");
                }
            }

            return this.Json(string.Empty);
        }
        public ActionResult ValidateProjectPerson(ProjectPresenter presenter)
        {
            ModelState.Clear();
            if (presenter != null)
            {
                var regFormatEmailCheck = new Regex(RegularExpressionEmail);
                if (string.IsNullOrWhiteSpace(presenter.StackHolder.FirstName))
                {
                    presenter.ValidationErrors.Add(FirstName, Resources.ErrorNameStackHolder);
                }

                if (string.IsNullOrWhiteSpace(presenter.StackHolder.Email))
                {
                    presenter.ValidationErrors.Add(Email, Resources.ErrorEmailStackHolder);
                }
                else if (!regFormatEmailCheck.IsMatch(presenter.StackHolder.Email))
                {
                    presenter.ValidationErrors.Add(Email, Resources.ErrorEmailValidStackHolder);
                }

                if (string.IsNullOrWhiteSpace(presenter.StackHolder.Skype))
                {
                    presenter.ValidationErrors.Add(SkypeID, Resources.ErrorSkypeStackHolder);
                }

                var errors = this.projectStakeHolderService.ValidateStackHolder(presenter.StackHolder);
                presenter.ValidationErrors.Append(errors);
            }

            return new JsonResult { Data = presenter, MaxJsonLength = int.MaxValue };
        }
        public ActionResult RetrievePersonRoleId(string developerId, ProjectPresenter presenter)
        {
            if (developerId != null && developerId != "undefined")
            {
                var list = this.developerService.RetrieveList(null, null, SessionData.Instance.UserInfo.Developer.DeveloperID);
                var item = list.FirstOrDefault(i => i.DeveloperID == Convert.ToInt32(developerId));
                if (item != null)
                {
                    var selectedRoleID = item.RoleID;
                    return new JsonResult { Data = selectedRoleID };
                }
            }

            return this.Json(string.Empty);
        }
        public ActionResult LoadStackHolder(string rowId, ProjectPresenter presenter)
        {
            presenter.AssignRoles(this.lookupService.RetrieveRoles(null, null, SessionData.Instance.UserInfo.Developer.DeveloperID));
            if (rowId.Equals(Zero))
            {
                StackHolder s = new StackHolder();
            }
            else
            {
                var result = this.projectStakeHolderService.RetrieveStackHolderById(Convert.ToInt32(rowId));
                presenter.StackHolder = result;
            }

            return this.PartialView("_StackHolderPopUp", presenter);
            ////var result = this.projectStakeHolderService.RetrieveStackHolderById(Convert.ToInt32(rowId));
            ////return new JsonResult { Data = result, MaxJsonLength = int.MaxValue };
        }
Exemple #27
0
 public FrmXtraProjectDetail()
 {
     InitializeComponent();
     _projectPresenter  = new ProjectPresenter(this);
     _projectsPresenter = new ProjectsPresenter(this);
 }
 /// <summary>
 /// Decodes the raw text.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 private static void DecodeRawText(ProjectPresenter presenter)
 {
     presenter.Project.Comments = !string.IsNullOrEmpty(presenter.Project.Comments) ? WebUtility.HtmlDecode(presenter.Project.Comments) : presenter.Project.Comments;
     if (!presenter.Project.AtRiskFlag)
     {
         presenter.Project.Risk = WebUtility.HtmlDecode(presenter.OldRiskValue);
     }
     else
     {
         presenter.Project.Risk = !string.IsNullOrEmpty(presenter.Project.Risk) ? WebUtility.HtmlDecode(presenter.Project.Risk) : presenter.Project.Risk;
     }
 }
        public ActionResult AddEstimationHour(ProjectPresenter presenter)
        {
            ModelState.Clear();
            if (presenter != null)
            {
                var estimationCategory = presenter.EstimationCategory;
                if (estimationCategory != null)
                {
                    var selectedEstimationCategory = presenter.EstimationCategoryList.FirstOrDefault(e => e.ID == estimationCategory.ID);
                    if (selectedEstimationCategory != null)
                    {
                        estimationCategory.Name = presenter.EstimationCategoryList.FirstOrDefault(e => e.ID == estimationCategory.ID).Name;
                        var item = presenter.Project.EstimatedHours.Where(e => e.EstimationCategoryID == estimationCategory.ID).FirstOrDefault();
                        if (item == null)
                        {
                            presenter.Project.EstimatedHours.Add(new EstimatedHour
                            {
                                ApplicationEntityState = ApplicationEntityState.Added,
                                EstimationCategoryID = estimationCategory.ID,
                                EstimationCategoryName = estimationCategory.Name,
                                Hours = presenter.EstimationHour
                            });
                        }
                        else
                        {
                            item.Hours = presenter.EstimationHour;
                            item.ApplicationEntityState = item.EstimatedHoursID > 0 ? ApplicationEntityState.Modified : ApplicationEntityState.Added;
                        }

                        presenter.TotalEstimationHours = 0;
                        presenter.Project.EstimatedHours.ForEach(i => presenter.TotalEstimationHours = i.ApplicationEntityState != ApplicationEntityState.Deleted ? presenter.TotalEstimationHours + i.Hours.Value : presenter.TotalEstimationHours);
                    }
                }
            }

            return this.PartialView("_EstimatedHours", presenter);
        }
 /// <summary>
 /// Calculates the total estimation hours.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 private static void CalculateTotalEstimationHours(ProjectPresenter presenter)
 {
     presenter.Project.EstimatedHours.ForEach(i => presenter.TotalEstimationHours = presenter.TotalEstimationHours + i.Hours.Value);
 }
Exemple #31
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FrmXtraAccountingObjectDetail" /> class.
 /// </summary>
 public FrmTargetProgram()
 {
     InitializeComponent();
     _projectPresenter  = new ProjectPresenter(this);
     _projectsPresenter = new ProjectsPresenter(this);
 }
 /// <summary>
 /// Adds the onsite developer.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 /// <param name="selectedPersonId">The selected person identifier.</param>
 /// <param name="projectPerson">The project person.</param>
 /// <param name="selectedRole">The selected role.</param>
 /// <param name="developerItem">The developer item.</param>
 private static void AddOnsiteDeveloper(ProjectPresenter presenter, string selectedPersonId, ProjectPerson projectPerson, LookupItem selectedRole, Developer developerItem)
 {
     projectPerson = new ProjectPerson();
     projectPerson.PointOfContactFlag = presenter.PointContactFlag;
     projectPerson.ProjectID = presenter.Project.ProjectID;
     projectPerson.ModifiedByDeveloperID = SessionData.Instance.UserInfo.Developer.DeveloperID;
     projectPerson.ModifiedDate = DateTime.Now;
     projectPerson.Email = developerItem.Email;
     projectPerson.Skype = developerItem.Skype;
     projectPerson.RoleName = selectedRole.Name;
     projectPerson.RoleID = selectedRole.ID;
     projectPerson.Name = developerItem.Name;
     projectPerson.PersonID = Convert.ToInt32(selectedPersonId, CultureInfo.CurrentCulture);
     projectPerson.PersonType = Persontype.OnSiteTeam;
     projectPerson.DeveloperImage = developerItem.LoginID.RetrieveDeveloperImageName();
     projectPerson.ApplicationEntityState = ApplicationEntityState.Added;
     presenter.Project.ProjectPersons.Add(projectPerson);
 }
        /// <summary>
        /// Assigns the project details.
        /// </summary>
        /// <param name="presenter">The presenter.</param>
        /// <param name="projectId">The project identifier.</param>
        private void AssignProjectDetails(ProjectPresenter presenter, string projectId)
        {
            int? clientId = null;
            int? primarydeveloperId = null;
            int? secondarydeveloperId = null;
            int? parentProjectId = null;
            if (presenter.IsEdit)
            {
                presenter.Project = this.projectService.RetrieveById(Convert.ToInt32(projectId, CultureInfo.CurrentCulture), SessionData.Instance.UserInfo.Developer.DeveloperID);
                clientId = presenter.Project.ClientID;
                primarydeveloperId = presenter.Project.PrimaryPOCDeveloperID;
                secondarydeveloperId = presenter.Project.SecondaryPOCDeveloperID;
                parentProjectId = presenter.Project.ParentProjectID;
            }
            else
            {
                presenter.Project = new Project();
                presenter.Project.Priority = this.projectService.RetrieveMaximumPriorityValue(SessionData.Instance.UserInfo.Developer.CompanyID.Value);
                presenter.Project.IsClosed = false;
            }

            presenter.AssignClients(this.lookupService.RetrieveClients(clientId, false, SessionData.Instance.UserInfo.Developer.DeveloperID));

            presenter.AssignProjectStatusList(this.lookupService.RetrieveProjectStatusList(SessionData.Instance.UserInfo.Developer.DeveloperID));

            presenter.AssignPrimaryPointOfContacts(this.lookupService.RetrieveDevelopers(primarydeveloperId, false, SessionData.Instance.UserInfo.Developer.DeveloperID));

            presenter.AssignSecondaryPointOfContacts(this.lookupService.RetrieveDevelopers(secondarydeveloperId, false, SessionData.Instance.UserInfo.Developer.DeveloperID));

            presenter.AssignParentProjects(this.lookupService.RetrieveProjects(null, parentProjectId, false, false, SessionData.Instance.UserInfo.Developer.DeveloperID).Where(p => p.ProjectID != presenter.Project.ProjectID && p.ParentProjectID.HasValue == false).ToList());

            presenter.ParentProjectList.ForEach(p => { p.ProjectName = p.ProjectFullName; });

            presenter.AssignEstimationCategories(this.lookupService.RetrieveEstimationCategories(null, null, SessionData.Instance.UserInfo.Developer.DeveloperID));

            presenter.AssignRoles(this.lookupService.RetrieveRoles(null, null, SessionData.Instance.UserInfo.Developer.DeveloperID));

            AssignEstimationHourCategories(presenter);

            CalculateTotalEstimationHours(presenter);
        }
        public ActionResult AddProjectPersons(ProjectPresenter presenter, string selectedHolderType, string selectedPersonId)
        {
            ModelState.Clear();
            if (presenter != null)
            {
                var personType = (Persontype)Enum.Parse(typeof(Persontype), selectedHolderType);
                if (presenter.PointContactFlag == true && presenter.Project.ProjectPersons.Count > 0)
                {
                    presenter.Project.ProjectPersons.ForEach(item => item.PointOfContactFlag = false);
                }

                switch (personType)
                {
                    case Persontype.StakeHolder:
                        this.AssignStackHolderDetails(presenter, selectedHolderType, selectedPersonId);
                        break;

                    case Persontype.OnSiteTeam:
                        this.AssignOnsiteDeveloperDetails(presenter, selectedHolderType, selectedPersonId);
                        break;
                }
            }

            return this.PartialView("_StackHolderDetails", presenter);
        }
        /// <summary>
        /// views the project details.
        /// </summary>
        /// <param name="presenter">The presenter.</param>
        private void ViewProjectDetails(ProjectPresenter presenter)
        {
            if (presenter != null)
            {
                presenter.Project.ClientName = this.lookupService.RetrieveClients(presenter.Project.ClientID, false, SessionData.Instance.UserInfo.Developer.DeveloperID).FirstOrDefault(c => c.ID == presenter.Project.ClientID).Name;
                presenter.Project.StatusTitle = this.lookupService.RetrieveProjectStatusList(SessionData.Instance.UserInfo.Developer.DeveloperID).FirstOrDefault(c => c.ID == presenter.Project.Status).Name;

                if (presenter.Project.ParentProjectID.HasValue)
                {
                    var parentProject = this.projectService.RetrieveById(presenter.Project.ParentProjectID.Value, SessionData.Instance.UserInfo.Developer.DeveloperID);
                    presenter.Project.ParentProjectName = parentProject != null ? parentProject.Name : string.Empty;
                }

                if (presenter.Project.SecondaryPOCDeveloperID.HasValue)
                {
                    var secondaryDeveloper = this.developerService.RetrieveById(presenter.Project.SecondaryPOCDeveloperID.Value);
                    presenter.Project.SecondaryContactName = secondaryDeveloper != null ? secondaryDeveloper.Name : string.Empty;
                }

                var primaryDeveloepr = this.developerService.RetrieveById(presenter.Project.PrimaryPOCDeveloperID);
                presenter.Project.PrimaryContactName = primaryDeveloepr != null ? primaryDeveloepr.Name : string.Empty;
                presenter.AssignEstimationCategories(this.lookupService.RetrieveEstimationCategories(null, null, SessionData.Instance.UserInfo.Developer.DeveloperID));
                AssignEstimationHourCategories(presenter);

                CalculateTotalEstimationHours(presenter);
            }
        }
        public ActionResult SubmitDetails(ProjectPresenter presenter, string projectStatusId)
        {
            ModelState.Clear();
            if (presenter != null)
            {
                if (presenter.Project.Status == 0 && projectStatusId != "undefined" && projectStatusId != string.Empty)
                {
                    presenter.Project.Status = Convert.ToByte(projectStatusId);
                }

                presenter.Project.MailRecipient = !string.IsNullOrEmpty(presenter.Project.MailRecipient) ? presenter.Project.MailRecipient.Trim().Trim(',') : presenter.Project.MailRecipient;
                presenter.Project.CompanyID = SessionData.Instance.UserInfo.Developer.CompanyID;
                DecodeRawText(presenter);
                string shortName = presenter.Project.ShortName;
                presenter.Project.ShortName = string.IsNullOrWhiteSpace(shortName) ? null : shortName.Trim();
                this.projectService.InsertOrUpdate(presenter.Project, presenter.Artifacts.SelectMany(item => item.Items).ToList(), SessionData.Instance.UserInfo.Developer.DeveloperID);
            }

            return this.Json(string.Empty);
        }
        public ActionResult DeleteEstimationHour(ProjectPresenter presenter, string estimationCategoryId)
        {
            ModelState.Clear();
            if (presenter != null)
            {
                var estimationHour = presenter.Project.EstimatedHours.FirstOrDefault(e => e.ApplicationEntityState != ApplicationEntityState.Deleted && e.EstimationCategoryID == Convert.ToInt32(estimationCategoryId, CultureInfo.CurrentCulture));
                if (estimationHour != null)
                {
                    if (estimationHour.ProjectID == default(int))
                    {
                        presenter.Project.EstimatedHours.Remove(estimationHour);
                    }
                    else
                    {
                        estimationHour.ApplicationEntityState = ApplicationEntityState.Deleted;
                    }

                    presenter.TotalEstimationHours = presenter.TotalEstimationHours - estimationHour.Hours.Value;
                }
            }

            return this.PartialView("_EstimatedHours", presenter);
        }