예제 #1
0
        protected override void Handle(StartProjectTaskCommand request)
        {
            if (TaskRecorder.HasActiveTask)
            {
                DuplicateTaskValidator taskValidator = new DuplicateProjectTaskValidator(TaskRecorder.ActiveTask,
                                                                                         request.ProjectDto.ID, request.ProjectStageDto.ID, request.WorksetDto.ID,
                                                                                         request.IsAddCost, request.IsMistake);
                taskValidator.ValidateDuplicate();
            }

            if (TaskService.AskBeforeStartNewTaskResult() == DialogResult.No)
            {
                return;
            }

            DateTime currentTime = Database.GetCurrentTime();

            if (TaskRecorder.HasActiveTask)
            {
                TaskRepository.Finish(TaskRecorder.ActiveTask, currentTime);
                TaskRecorder.StopActiveTask(currentTime);
            }

            Project      project        = ProjectRepository.Load(request.ProjectDto.ID);
            ProjectStage projectStage   = ProjectStageRepository.Load(request.ProjectStageDto.ID);
            Workset      workset        = WorksetRepository.Load(request.WorksetDto.ID);
            ProjectTask  newProjectTask = TaskFactory.CreateProjectTask(TaskRepository.NextIdentity(), project, projectStage,
                                                                        workset, request.IsAddCost, request.IsMistake);

            TaskRepository.Save(newProjectTask, currentTime);
            TaskRecorder.StartNewTask(newProjectTask, currentTime);
            WorkTimer.Start();
        }
예제 #2
0
        public JudgeEmailMessage(string projectName, ProjectStage stage)
        {
            (string subject, string messageBody)emailDetails;

            switch (stage)
            {
            case ProjectStage.Approved:
            {
                emailDetails = Approve(projectName);
                break;
            }

            case ProjectStage.Rejected:
            {
                emailDetails = Reject(projectName);
                break;
            }

            case ProjectStage.Returned:
            {
                emailDetails = Return(projectName);
                break;
            }
            }
        }
예제 #3
0
        /// <summary>
        /// Creates a new stage record
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void CreateOrganizationStageRecord(object sender, EventArgs e)
        {
            CaisisCheckBox eventCheckBox = sender as CaisisCheckBox;

            // Only need to save if checked
            if (eventCheckBox.Checked)
            {
                ProjectStage biz = new ProjectStage();

                RepeaterItem rptrItem       = eventCheckBox.NamingContainer as RepeaterItem;
                HiddenField  orgIdField     = rptrItem.FindControl("OrgIdField") as HiddenField;
                HiddenField  stageIdField   = rptrItem.FindControl("OrgStageIdField") as HiddenField;
                HiddenField  projectStageId = rptrItem.NamingContainer.NamingContainer.FindControl("ProjectStageId") as HiddenField;
                Label        sName          = rptrItem.NamingContainer.NamingContainer.FindControl("StageLabel") as Label;
                HiddenField  sColor         = rptrItem.NamingContainer.NamingContainer.FindControl("StageColor") as HiddenField;
                // Only save a new stage record if one doesn't exist
                if (string.IsNullOrEmpty(stageIdField.Value))
                {
                    int    orgId       = int.Parse(orgIdField.Value);
                    int    projStageId = int.Parse(projectStageId.Value);
                    string stageName   = sName.Text;

                    ProjectStage stageBiz = new ProjectStage();
                    stageBiz[ProjectStage.ProjectId]      = projectId;
                    stageBiz[ProjectStage.OrganizationId] = orgId;
                    stageBiz[ProjectStage.Name]           = stageName;
                    stageBiz[ProjectStage.ColorCode]      = sColor.Value;
                    stageBiz.Save();

                    int orgStageId = int.Parse(stageBiz[ProjectStage.StageId].ToString());
                    stageIdField.Value = orgStageId.ToString();
                }
            }
        }
예제 #4
0
        public async Task <IActionResult> PostStageProgress([FromBody] StageProgress stageProgress)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            ProjectStage projectStage = _context.ProjectStages.Where(l => l.ProjectStageId == stageProgress.ProjectStageId).FirstOrDefault();

            if (projectStage == null)
            {
                return(BadRequest("Pasirinktas nekorektiškas projekto etapas"));
            }

            stageProgress = calculateSPI(stageProgress);

            if (stageProgress.SPI == -1)
            {
                return(BadRequest("Netinkamos projekto etapo datos - skaičiuojant rodiklius gaunama dalyba iš nulio"));
            }

            stageProgress.Date = stageProgress.Date.ToLocalTime();

            _context.StageProgresses.Add(stageProgress);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetStageProgress", new { id = stageProgress.StageProgressId }, stageProgress));
        }
예제 #5
0
        public StageProgress calculateSPI(StageProgress stageProgress)
        {
            StageProgress progress = stageProgress;

            progress.SPI = -1;

            ProjectStage projectStage = _context.ProjectStages.Where(l => l.ProjectStageId == progress.ProjectStageId).FirstOrDefault();

            if (projectStage != null && projectStage.StartDate != null)
            {
                double timeElapsed = GetNumberOfBusinessDays(projectStage.StartDate, progress.Date) * 100;

                double timePlanned = GetNumberOfBusinessDays(projectStage.ScheduledStartDate, projectStage.ScheduledEndDate);

                if (timeElapsed != 0 && timePlanned != 0)
                {
                    progress.ScheduledPercentage = timeElapsed / timePlanned;

                    progress.SPI = progress.Percentage / progress.ScheduledPercentage;

                    progress.ScheduledPercentage = Convert.ToDouble(String.Format("{0:0.00}", progress.ScheduledPercentage));

                    progress.SPI = Convert.ToDouble(String.Format("{0:0.00}", progress.SPI));
                }
            }
            return(progress);
        }
예제 #6
0
        /// <summary>
        /// Deletes a stage record and reloads Organization's summary page.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void DeleteStage(object sender, EventArgs e)
        {
            // Delete assocaited events
            //ProjectStageEvent events = new ProjectStageEvent();
            //events.GetByParent(stageId);
            //int[] deleteKeys = new int[events.DataSourceView.Table.Rows.Count];

            DataTable table = BusinessObject.GetByParentAsDataView <ProjectStageEvent>(stageId).Table;

            int[] deleteKeys = new int[table.Rows.Count];
            //for (int i = 0; i < events.DataSourceView.Table.Rows.Count; i++)
            for (int i = 0; i < table.Rows.Count; i++)
            {
                //DataRow row = events.DataSourceView.Table.Rows[i];
                DataRow row     = table.Rows[i];
                int     eventId = int.Parse(row[ProjectStageEvent.StageEventId].ToString());
                deleteKeys[i] = eventId;
            }
            foreach (int eventId in deleteKeys)
            {
                //events.Delete(eventId);
                ProjectStageEvent ev = new ProjectStageEvent();
                ev.Delete(eventId);
            }

            // Finally delete Stage.
            ProjectStage biz = new ProjectStage();

            biz.Delete(stageId);

            // Call client script which loads summary section and hilights summary in navigation
            RegisterPageReload();
        }
예제 #7
0
 protected void lbtnSubmit_Click(object sender, EventArgs e)
 {
     if (UpLoadFile() == false)
     {
         Response.Write("<script>alert('请上传项目文件!');</script>");
     }
     else
     {
         int project_id = Convert.ToInt32(Request.QueryString["id"]);
         int stage      = Convert.ToInt32(Request.QueryString["stage"]);
         using (var db = new TeachingCenterEntities())
         {
             var          project  = (from it in db.ProjectStage where it.project_id == project_id && it.stage == stage select it).FirstOrDefault();
             ProjectStage newStage = new ProjectStage();
             newStage.project_id      = project_id;
             newStage.project_content = UeditorHelper.Change(myEditor11.InnerHtml);
             newStage.project_file    = "file/" + FileUp.PostedFile.FileName;
             newStage.stage           = stage + 1;
             newStage.time            = DateTime.Now.ToString("yyyy-MM-dd");
             newStage.is_pass         = -2;
             db.ProjectStage.Add(newStage);
             db.SaveChanges();
             Response.Write("<script>location.href='MyProject.aspx?pageNumber=1';</script>");
         }
     }
 }
예제 #8
0
        /// <summary>
        /// Builds a stage level Gant Chart where each item represents an event of the stage.
        /// </summary>
        /// <param name="chart"></param>
        /// <param name="stageId"></param>
        public static void BuildStageLevelGantChart(GantChart chart, int stageId)
        {
            chart.Controls.Clear();

            ProjectStage stageBiz = new ProjectStage();

            stageBiz.Get(stageId);

            string gantTitle = stageBiz[ProjectStage.Name].ToString() + " [Events]";

            chart.GantTitle = gantTitle;


            string stageColor = stageBiz[ProjectStage.ColorCode].ToString();

            //ProjectStageEvent biz = new ProjectStageEvent();
            //biz.GetByParent(stageId);
            //foreach (DataRow stageEventRecord in biz.DataSourceView.Table.Rows)

            DataView view = BusinessObject.GetByParentAsDataView <ProjectStageEvent>(stageId);

            foreach (DataRow stageEventRecord in view.Table.Rows)
            {
                string   stageEventName = stageEventRecord[ProjectStageEvent.Name].ToString();
                DateTime startDate      = DateTime.MinValue;
                DateTime endDate        = DateTime.MaxValue;
                if (stageEventRecord[ProjectStageEvent.EventStartDate] != null)
                {
                    string dateString = stageEventRecord[ProjectStageEvent.EventStartDate].ToString();
                    if (!string.IsNullOrEmpty(dateString))
                    {
                        startDate = DateTime.Parse(dateString);
                    }
                }
                if (stageEventRecord[ProjectStageEvent.EventEndDate] != null)
                {
                    string dateString = stageEventRecord[ProjectStageEvent.EventEndDate].ToString();
                    if (!string.IsNullOrEmpty(dateString))
                    {
                        endDate = DateTime.Parse(dateString);
                    }
                }
                if (!(startDate == DateTime.MinValue && endDate == DateTime.MaxValue))
                {
                    GantItem item = new GantItem(startDate, endDate);
                    item.Description = stageEventName;
                    string startText = startDate.ToShortDateString();
                    string endText   = endDate.ToShortDateString();
                    item.ToolTip = "Start Date: " + startText + " - End Date: " + endText;

                    // Color item based on it's parent stage.
                    if (!string.IsNullOrEmpty(stageColor))
                    {
                        item.Color = stageColor;
                    }
                    chart.Controls.Add(item);
                }
            }
        }
예제 #9
0
 public ApprovalProjectDisplay(string name, string Description, DateTime startDate, DateTime endDate, ProjectStage status)
 {
     this.Name        = name;
     this.Description = Description;
     this.StartDate   = startDate;
     this.EndDate     = endDate;
     this.Stage       = Stage;
 }
예제 #10
0
        public async Task <IActionResult> Stages([FromBody] StageViewModel model)
        {
            ProjectStage stage = Mapper.Map <ProjectStage>(model);

            await _projectService.SaveStage(stage);

            return(Ok());
        }
        public ActionResult DeleteConfirmed(int id)
        {
            ProjectStage projectStage = db.ProjectStages.Find(id);

            db.ProjectStages.Remove(projectStage);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "ProjectStageID,ProjectStageName")] ProjectStage projectStage)
 {
     if (ModelState.IsValid)
     {
         db.Entry(projectStage).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(projectStage));
 }
예제 #13
0
        public static string GetRequiredRelationshipTypeErrorStringSuffix(ProjectStage currentProjectStage, ProjectFirmaModels.Models.ContactRelationshipType contactRelationshipType)
        {
            bool hasMinimumProjectStageSet = contactRelationshipType.IsContactRelationshipRequiredMinimumProjectStage != null;

            if (hasMinimumProjectStageSet && currentProjectStage.SortOrder >= contactRelationshipType.IsContactRelationshipRequiredMinimumProjectStage.SortOrder)
            {
                return($"Project Stage is at or beyond {contactRelationshipType.IsContactRelationshipRequiredMinimumProjectStage.ProjectStageDisplayName}, when the {contactRelationshipType.ContactRelationshipTypeName} must be set.");
            }

            return(string.Empty);
        }
예제 #14
0
        private BaseTask GetActiveProjectTask()
        {
            var project      = new Project(1, "TestName", ProjectType.Engineer);
            var projectStage = new ProjectStage(1, "TestName");
            var workset      = new Workset(1, new List <Activity>()
            {
                new Activity(1, "TestName")
            });

            return(new ProjectTask(1, project, DateTime.Now, DateTime.Now, projectStage, workset, false, false));
        }
        public ActionResult Create([Bind(Include = "ProjectStageID,ProjectStageName")] ProjectStage projectStage)
        {
            if (ModelState.IsValid)
            {
                db.ProjectStages.Add(projectStage);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(projectStage));
        }
        private Tuple <int, int> GetProjectsStats(
            IReadOnlyList <Project> allProjects, ProjectStage stage)
        {
            int count = allProjects
                        .Count(x => x.Stage == stage);
            int price = allProjects
                        .Where(x => x.Stage == stage)
                        .Sum(x => x.Price);

            return(new Tuple <int, int>(count, price));
        }
예제 #17
0
        /// <summary>
        /// Creates child ProjectStageEvents and ProjectEventAttributes records
        /// based off of child/parent Lookup scheme.
        /// NOTE: Child records will not be created if any ProjectStageEvents records exists.
        /// </summary>
        /// <param name="biz"></param>
        public static void CreateProjectStageEvents(ProjectStage biz)
        {
            BusinessObject        parentBiz   = biz;
            BusinessObject        childBiz    = new ProjectStageEvent();
            List <BusinessObject> stageEvents = CreateChildRecordByBizLkpCodes(parentBiz, childBiz, ProjectStage.Name, ProjectStageEvent.Name, PROJECT_STAGE_TYPE_CODE, PROJECT_STAGE_EVENT_TYPE_CODE, true, true);

            foreach (BusinessObject stageEvent in stageEvents)
            {
                CreateProjectStageEventAttributes(stageEvent as ProjectStageEvent);
            }
        }
예제 #18
0
        public ProjectStage createProjectStages(string scheduledStartDate, string scheduledEndDate, string startDate)
        {
            var          scheduledStartDate1 = DateTime.ParseExact(scheduledStartDate, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
            var          scheduledEndDate1   = DateTime.ParseExact(scheduledEndDate, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
            var          startDate1          = DateTime.ParseExact(startDate, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
            ProjectStage projectStage        = new ProjectStage()
            {
                ScheduledStartDate = scheduledStartDate1, ScheduledEndDate = scheduledEndDate1, StartDate = startDate1
            };

            return(projectStage);
        }
예제 #19
0
        public override void ExitSelectAttributeOrFunction([NotNull] QueryBuilderQueriesParser.SelectAttributeOrFunctionContext context)
        {
            List <ProjectArgument> Arguments = new List <ProjectArgument>();

            foreach (var selectAttribute in context.attributeOrFunction().Where(af => af.simpleAttribute() != null))
            {
                var             sa       = selectAttribute.simpleAttribute();
                QueryableEntity qElement = new QueryableEntity(metadata.EntityRelationshipModel.FindByName(sa.elementName.Text));
                Arguments.Add(new ProjectArgument(qElement.GetAttribute(sa.attribute.Text), qElement, new QueryBuilder.Mongo.Expressions.BooleanExpr(true)));
            }
            ProjectOp = new ProjectStage(Arguments, metadata.ERMongoMapping);
        }
예제 #20
0
        public async Task <APIResponse <string> > EditProject(long projectId, ProjectStage stage)
        {
            var url = ApiUrls.Project.SetQueryParams(new
            {
                userKey   = mUserData.UserKey,
                projectId = projectId,
                stage     = stage,
            });

            var data = await HandleForPUT <string>(url);

            return(data);
        }
예제 #21
0
        protected ProjectCreateViewData(Person currentPerson,
                                        Models.Project project,
                                        string currentSectionDisplayName,
                                        ProposalSectionsStatus proposalSectionsStatus) : this(project, currentPerson, currentSectionDisplayName)
        {
            IsInstructionsPage = currentSectionDisplayName.Equals("Instructions", StringComparison.InvariantCultureIgnoreCase);
            bool isBasicsPage = currentSectionDisplayName.Equals("Basics", StringComparison.InvariantCultureIgnoreCase);

            Check.Assert(project != null, "Project should be created in database by this point so it cannot be null.");
            // SLG- See Story #1506 - Causing us much grief, perhaps the disease is really better than this cure? We know the Project record exists, is that maybe enough?
            //   This whole expression seems like it had multiple errors in it, giving up on it for now, I don't understand what it is trying to do.
            //   We can't get it to crash once this is removed, so, to heck with it for now.
            //Check.Assert(IsInstructionsPage || isBasicsPage || proposalSectionsStatus.IsBasicsSectionComplete, $"Can't access this section of the Proposal - You must complete the basics first ({project.GetEditUrl()})");

            CurrentPersonCanWithdraw = new ProjectCreateFeature().HasPermission(currentPerson, project).HasPermission;

            Project                = project;
            ProjectStage           = project.ProjectStage;
            ProposalSectionsStatus = proposalSectionsStatus;
            CanAdvanceStage        = ProposalSectionsStatus.AreAllSectionsValidForProject(project);
            // ReSharper disable PossibleNullReferenceException
            ProjectStateIsValidInWizard = project.ProjectApprovalStatus == ProjectApprovalStatus.Draft || project.ProjectApprovalStatus == ProjectApprovalStatus.Returned || project.ProjectApprovalStatus == ProjectApprovalStatus.PendingApproval;

            InstructionsPageUrl = project.ProjectStage == ProjectStage.Proposed
                ? SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x =>
                                                                               x.InstructionsProposal(project.ProjectID))
                : SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x =>
                                                                               x.InstructionsEnterHistoric(project.ProjectID));

            var pagetitle = project.ProjectStage == ProjectStage.Proposed ? $"{Models.FieldDefinition.Application.GetFieldDefinitionLabel()}" : $"Add {Models.FieldDefinition.Project.GetFieldDefinitionLabel()}";

            PageTitle = $"{pagetitle}: {project.DisplayName}";

            ProposalDetailUrl = SitkaRoute <ProjectController> .BuildUrlFromExpression(x => x.Detail(project));

            ProposalBasicsUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x => x.EditBasics(project.ProjectID));

            ProposalNotesUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x => x.DocumentsAndNotes(project.ProjectID));

            ProposalPhotosUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x => x.Photos(project.ProjectID));

            SubmitUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x => x.Submit(project));

            ApproveUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x => x.Approve(project));

            ReturnUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x => x.Return(project));

            WithdrawUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x => x.Withdraw(project));

            RejectUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(x => x.Reject(project));
        }
예제 #22
0
        public bool IsProjectStagesBugdetSumCorrect(ProjectStage projectStage)
        {
            double projectBudget = _context.Projects.Where(l => l.ProjectId == projectStage.ProjectId).Select(l => l.Budget).Single();

            double projectStagesBugdetSum = _context.ProjectStages.Where(l => l.ProjectId == projectStage.ProjectId).Where(l => l.ProjectStageId != projectStage.ProjectStageId).Select(l => l.StageBudget).Sum();

            projectStagesBugdetSum += projectStage.StageBudget;

            if (projectBudget >= projectStagesBugdetSum)
            {
                return(true);
            }
            return(false);
        }
        // GET: ProjectStages/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProjectStage projectStage = db.ProjectStages.Find(id);

            if (projectStage == null)
            {
                return(HttpNotFound());
            }
            return(View(projectStage));
        }
예제 #24
0
        public void ProjectSimpleAttributes()
        {
            // Asserts if the query result for a relationship join operation is equal
            // to a handcrafted query
            RequiredDataContainer ModelData = ProjectDataProvider.SimpleModel();

            // Load handcrafted query
            string HandcraftedQuery = Utils.ReadQueryFromFile("HandcraftedQueries/projectQuerySimple.js");

            // Assert if the handcrafted query is not null
            Assert.IsNotNull(HandcraftedQuery);

            // Prepare query generator
            QueryableEntity Person = new QueryableEntity(ModelData.EntityRelationshipModel.FindByName("Person"));

            List <ProjectArgument> Arguments = new List <ProjectArgument>();

            Arguments.Add(new ProjectArgument(Person.GetAttribute("personId"), Person, new BooleanExpr(false)));
            Arguments.Add(new ProjectArgument(Person.GetAttribute("name"), Person, new BooleanExpr(true)));
            Arguments.Add(new ProjectArgument(Person.GetAttribute("age"), Person, new BooleanExpr(true)));

            ProjectStage ProjectOp = new ProjectStage(Arguments, ModelData.ERMongoMapping);

            List <AlgebraOperator> OpList = new List <AlgebraOperator> {
                ProjectOp
            };
            FromArgument StartArg = new FromArgument(new QueryableEntity(ModelData.EntityRelationshipModel.FindByName("Person")),
                                                     ModelData.ERMongoMapping);

            QueryGenerator QueryGen = new QueryGenerator(StartArg, OpList);

            string GeneratedQuery = QueryGen.Run();

            // Assert if generated query is not null
            Assert.IsNotNull(GeneratedQuery);

            // Run Queries
            QueryRunner Runner = new QueryRunner("mongodb://localhost:27017", "ceManyToMany2");

            string HandcraftedResult = Runner.GetJSON(HandcraftedQuery);
            string GeneratedResult   = Runner.GetJSON(GeneratedQuery);

            // Check if either result is null
            Assert.IsNotNull(HandcraftedResult);
            Assert.IsNotNull(GeneratedResult);

            // Check if both results are equal
            Assert.IsTrue(JToken.DeepEquals(JToken.Parse(HandcraftedResult), JToken.Parse(GeneratedResult)));
        }
예제 #25
0
 public ProjectStageTile(ProjectStage stage)
     : this()
 {
     ID              = stage.ID;
     CrtDate         = stage.CrtDate;
     IsFocused       = false;
     IsPublic        = stage.IsPublic;
     Name            = stage.Name;
     Note            = stage.Note;
     Project         = stage.Project;
     ProjectID       = stage.ProjectID;
     ResponsibleRole = stage.ResponsibleRole;
     RowState        = stage.RowState;
     SortIndex       = stage.SortIndex;
     StageParameter  = stage.StageParameter;
     StageState      = stage.StageState;
 }
예제 #26
0
 protected void btnSubmit_Click(object sender, EventArgs e)
 {
     using (var db = new TeachingCenterEntities())
     {
         int          id     = Convert.ToInt32(Request.QueryString["id"]);
         ProjectStage result = (from it in db.ProjectStage where it.project_id == id orderby it.stage descending select it).FirstOrDefault();
         if (ddlResult.SelectedValue == "0")
         {
             result.is_pass = 1;
         }
         else
         {
             result.is_pass = 0;
         }
         db.SaveChanges();
     }
     Response.Write("<script>alert('提交成功!');location.href='ProjectList.aspx';</script>");
 }
예제 #27
0
        public void ProjectStageShowFields()
        {
            //RequiredDataContainer ModelData = VirtualMapDataProvider.VirtualMapModel();
            var ModelData = QueryBuilderParser.ParseMapping(Utils.ReadMappingFile("Mappings/virtual-map.mapping"));

            QueryableEntity Person = new QueryableEntity(ModelData.EntityRelationshipModel.FindByName("Person"));
            QueryableEntity Pet    = new QueryableEntity(ModelData.EntityRelationshipModel.FindByName("Pet"));

            RelationshipJoinOperator RJoinOp = new RelationshipJoinOperator(
                Person,
                (Relationship)ModelData.EntityRelationshipModel.FindByName("HasPet"),
                new List <QueryableEntity>()
            {
                Pet
            },
                ModelData.ERMongoMapping);

            VirtualMap RJoinVMap = RJoinOp.ComputeVirtualMap();

            Assert.IsNotNull(RJoinVMap, "RJOIN Virtual map cannot be null");

            List <ProjectArgument> ProjectArguments = new List <ProjectArgument>();

            ProjectArguments.Add(new ProjectArgument(Person.GetAttribute("name"), Person, new BooleanExpr(true)));
            ProjectArguments.Add(new ProjectArgument(Person.GetAttribute("age"), Person, new BooleanExpr(true)));
            ProjectArguments.Add(new ProjectArgument(Pet.GetAttribute("name"), Pet, new BooleanExpr(true)));

            ProjectStage ProjectOp = new ProjectStage(ProjectArguments, RJoinVMap);

            VirtualMap ProjectVirtualMap = ProjectOp.ComputeVirtualMap(RJoinVMap);

            Assert.IsNotNull(ProjectVirtualMap, "Project virtual map cannot be null");

            List <string> VirtualMapRules = ProjectVirtualMap.GetRulesAsStringList();

            List <string> RulesToMatch = new List <string>()
            {
                "name",
                "age",
                "data_HasPet.Pet_name",
            };

            Assert.IsTrue(!VirtualMapRules.Except(RulesToMatch).Any() && !RulesToMatch.Except(VirtualMapRules).Any(), "Virtual maps do not match");
        }
예제 #28
0
        public Boolean CheckDuplicate(ProjectStage projectstage, Boolean IsInsert)
        {
            Boolean Result = true;

            try
            {
                var c = _projectstageRepository.GetSingle(p => p.StageName.ToUpper() == projectstage.StageName.ToUpper());
                if (!IsInsert)
                {
                    if (c == null)
                    {
                        Result = true;
                    }
                    else if (c.ProjectStageID == projectstage.ProjectStageID)
                    {
                        Result = true;
                    }
                    else
                    {
                        Result = false;
                    }
                }
                else
                {
                    if (c == null)
                    {
                        Result = true;
                    }
                    else
                    {
                        Result = false;
                    }
                }
            }
            catch (Exception ex)
            {
                //bool false = BusinessLogicExceptionHandler.HandleException(ref ex);
                if (false)
                {
                    throw ex;
                }
            }
            return(Result);
        }
예제 #29
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        string name       = txtName.Text;
        int    teacher_id = TeacherHelper.getTeacherIDByNumber(Session["TeacherNumber"].ToString());
        string fund       = txtMoney.Text;
        Regex  numRegex   = new Regex(@"^\d+$");
        string filePath   = FileUp.PostedFile.FileName;

        if (name.Length == 0)
        {
            Response.Write("<script>alert('项目名称不能为空!');</script>");
        }
        else if (fund.Length == 0)
        {
            Response.Write("<script>alert('资助金额不能为空!');</script>");
        }
        else if (!numRegex.IsMatch(fund))
        {
            Response.Write("<script>alert('请输入正确的资助金额!');</script>");
        }
        //else if (UpLoadFile() == false)
        //Response.Write("<script>alert('请上传项目文件!');</script>");
        else
        {
            using (var db = new TeachingCenterEntities())
            {
                int     project_id = Convert.ToInt32(Request.QueryString["id"]);
                Project project    = (from it in db.Project where it.project_id == project_id select it).FirstOrDefault();
                project.name = name;
                project.fund = fund;
                db.SaveChanges();

                ProjectStage project_stage = (from it in db.ProjectStage where it.project_id == project_id orderby it.stage descending select it).FirstOrDefault();
                project_stage.project_content = UeditorHelper.Change(myEditor11.InnerHtml);
                if (UpLoadFile() == true)
                {
                    project_stage.project_file = "file/" + FileUp.PostedFile.FileName;
                }
                db.SaveChanges();
                Response.Redirect("MyProject.aspx?pageNumber=1");
            }
        }
    }
예제 #30
0
        public async Task <IActionResult> PostProjectStage([FromBody] ProjectStage projectStage)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var projectStageName = _context.ProjectStageNames.Where(l => l.ProjctStageNameId == projectStage.ProjectStageNameId).Select(l => l.ProjctStageNameId).FirstOrDefault().ToString();

            var project = _context.Projects.Where(l => l.ProjectId == projectStage.ProjectId).Select(l => l.ProjectId).FirstOrDefault().ToString();

            if (projectStageName == "0" || project == "0")
            {
                return(BadRequest("Pasirinktas nekorektiškas projektas ar projekto etapo pavadinimas"));
            }

            if (!IsProjectStagesBugdetSumCorrect(projectStage))
            {
                return(BadRequest("Projekto etapų biudžetų suma negali būti didesnė nei projekto suma"));
            }

            projectStage.ScheduledEndDate = projectStage.ScheduledEndDate.ToLocalTime();
            projectStage.StartDate        = projectStage.StartDate?.ToLocalTime();
            projectStage.EndDate          = projectStage.EndDate?.ToLocalTime();
            //  int? days = (int?)(date1 - date2)?.TotalDays;
            projectStage.ScheduledStartDate = projectStage.ScheduledStartDate.ToLocalTime();

            /*
             * if (projectStage.EndDate != null)
             * {
             *  projectStage.EndDate = projectStage.EndDate.ToLocalTime();
             * }
             *
             * if (projectStage.StartDate != null)
             * {
             *  projectStage.StartDate = projectStage.StartDate.ToLocalTime();
             * }
             */
            _context.ProjectStages.Add(projectStage);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetProjectStage", new { id = projectStage.ProjectStageId }, projectStage));
        }
        private Tuple<int, int> GetProjectsStats(IReadOnlyList<Project> allProjects, ProjectStage stage)
        {
            int count = allProjects.Count(x => x.Stage == stage);
            int price = allProjects.Where(x => x.Stage == stage).Sum(x => x.Price);

            return new Tuple<int, int>(count, price);
        }