示例#1
0
        private void BindDataList()
        {
            if (list.Count <= 0)
            {
                ProjectDetailDTO entity = new ProjectDetailDTO();
                entity.ProjectID = 0;
                entity.Title     = "No Project";
                list.Add(entity);
            }
            this.rptListProjects.DataSource = list;

            this.rptListProjects.DataBind();
        }
示例#2
0
        /// <summary>
        /// 下拉框 改变时 的做法
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ddlProject_SelectedIndexChanged(object sender, EventArgs e)
        {
            ProjectApplication      projectApplication = new ProjectApplication();
            List <ProjectDetailDTO> list             = projectApplication.GetUserProjectsForCreateObject(UserInfo);
            ProjectDetailDTO        projectDetailDto = list.FirstOrDefault(c => c.Title == ddlProject.SelectedItem.Text);
            List <UsersEntity>      users            = new List <UsersEntity>();

            if (projectDetailDto != null)
            {
                var sunnetUser = projectApplication.GetProjectSunnetUserList(projectDetailDto.ProjectID);
                users.AddRange(sunnetUser.Select(t => userApp.GetUser(t.UserID)).Where(user => user != null && user.Status.Trim() != "INACTIVE"));
                list.Remove(projectDetailDto);
                list.BindDropdown <ProjectDetailDTO>(ddlProject, "Title", "ProjectID", projectDetailDto.Title, projectDetailDto.ProjectID.ToString(), "", false);
                ddlProject.Attributes.Add("onchange", "fnDisplayUsers();ChangeProject();check();");
                UsersEntity myselef = users.FirstOrDefault(c => c.UserID == UserInfo.UserID);
                if (myselef != null)
                {
                    users.Remove(myselef);
                    users.Add(new UsersEntity()
                    {
                        FirstName = "System",
                        UserID    = -1
                    });
                    users.BindDropdown <UsersEntity>(ddlRes, "FirstAndLastName", "UserID", myselef.FirstAndLastName, myselef.UserID.ToString(), "", true);
                }
                else
                {
                    users.Add(new UsersEntity()
                    {
                        FirstName = "System",
                        UserID    = -1
                    });
                    users.BindDropdown <UsersEntity>(ddlRes, "FirstAndLastName", "UserID");
                }
            }
        }
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            try
            {
                if (IdentityContext.UserID <= 0)
                {
                    return;
                }
                string   isClient      = context.Request["isClient"];
                string   projectIdList = context.Request["checkboxList"];
                int      uid           = int.Parse(context.Request["uid"]);
                string[] projectIds    = projectIdList.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                #region 获取已经分配了的project
                SearchProjectsRequest request = new SearchProjectsRequest(SearchProjectsType.ListByUserID
                                                                          , false, "projectId", "ASC");
                request.UserID = uid;
                SearchProjectsResponse projectList = new ProjectApplication().SearchProjects(request);
                for (int i = 0; i < projectIds.Length; i++)
                {
                    int projectId = 0;
                    int.TryParse(projectIds[i], out projectId);
                    ProjectDetailDTO project = projectList.ResultList.Find(t => t.ProjectID == projectId);
                    if (project != null && project.ProjectID != 0)
                    {
                        context.Response.Write("some of the selected projects have been assigned to this user!");
                        return;
                    }
                }

                #endregion

                List <BrokenRuleMessage> listmsgs = new List <BrokenRuleMessage>();
                foreach (string projectId in projectIds)
                {
                    ProjectUsersEntity model = ProjectsFactory.CreateProjectUser(IdentityContext.UserID
                                                                                 , ObjectFactory.GetInstance <ISystemDateTime>());
                    model.ProjectID = int.Parse(projectId);
                    model.UserID    = uid;
                    model.ISClient  = Boolean.Parse(isClient);

                    if (projApp.AssignUserToProject(model) < 0)
                    {
                        RecordMsg(listmsgs, projApp.BrokenRuleMessages);
                    }
                }
                if (listmsgs.Count > 0)
                {
                    context.Response.Write("Assign Fail!");
                }
                else
                {
                    context.Response.Write("The project has been assigned.");
                }
            }
            catch (Exception ex)
            {
                context.Response.Write("Input special symbol is not allowed,please check title and description!");
                WebLogAgent.Write(string.Format("Error Ashx:DoAddTicketHandler.ashx Messages:\r\n{0}", ex));
                return;
            }
        }
示例#4
0
        public async Task <IHttpActionResult> CreateProject(ProjectPostDTO project_data)
        {
            string  reg   = User.Identity.GetUserId();
            Company owner = await db.Companies.Where(d => d.registrationId == reg).SingleOrDefaultAsync();

            if (owner == null)
            {
                return(StatusCode(HttpStatusCode.NotAcceptable));
            }
            int owner_id = owner.Id;

            if (owner == null)
            {
                return(StatusCode(HttpStatusCode.NotAcceptable));
            }
            Int32    timeStamp;
            Int32    closing;
            DateTime dueDate;

            try
            {
                timeStamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
                dueDate   = DateTime.ParseExact(project_data.due_date, "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture).ToUniversalTime();
                closing   = (Int32)(dueDate.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
            }
            catch (Exception e)
            {
                return(StatusCode(HttpStatusCode.ExpectationFailed));
            }
            TimeSpan span = dueDate.Subtract(DateTime.UtcNow);

            if (span.Days < 1)
            {
                return(StatusCode(HttpStatusCode.Forbidden));
            }
            Project project = new Project()
            {
                title       = project_data.project_title,
                detailsText = project_data.description,
                audience    = project_data.targeted_level,
                category    = project_data.project_category,
                companyId   = owner_id,
                dueDate     = project_data.due_date,
                currentDate = timeStamp,
                closingDate = closing,
                launchDate  = "" + DateTime.UtcNow.Month + "/" + DateTime.UtcNow.Day + "/" + DateTime.UtcNow.Year,
                other2      = project_data.city,
                other1      = project_data.remuneration
            };

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Project posted = db.Projects.Add(project);
            await db.SaveChangesAsync();

            ProjectDetailDTO posted_project = new ProjectDetailDTO()
            {
                project_id       = posted.Id,
                project_title    = posted.title,
                project_category = posted.category,
                project_status   = posted.status,
                description      = posted.detailsText,
                attachment       = posted.detailsResourceUrl,
                launch_date      = posted.launchDate,
                due_date         = posted.dueDate,
                targeted_level   = posted.audience,
                num_views        = posted.numViews,
                num_application  = posted.numApplication,
                num_comments     = posted.numComments,
                city             = posted.other2,
                remuneration     = posted.other1,
                company          = new CompanyDTO()
                {
                    companyID        = posted.company.Id,
                    name             = posted.company.companyName,
                    company_category = posted.company.category,
                    profile_pic      = posted.company.profilePicture,
                    wall_pic         = posted.company.wallpaper
                }
            };

            return(Ok(posted_project));
            // return StatusCode(HttpStatusCode.Created);
        }
        public IHttpActionResult EditProject(int id, ProjectDetailDTO project)
        {
            if (project == null)
            {
                return BadRequest(ModelState);
            }

            var updateProject =
               Db.Projects.SingleOrDefault(u => u.Id == id);

            if (updateProject == null)
            {
                return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Project not found!"));
            }

            updateProject.CategoryId = project.CategoryId;
            updateProject.Description = project.Description;
            updateProject.Deadline = project.Deadline;
            updateProject.TargetFund = project.TargetFund;
            updateProject.ImageLink = project.ImageLink;

            Db.SaveChanges();

            return Ok("Update successfull!");
        }
        public IHttpActionResult GetProject(int id)
        {
            var project = Db.Projects.SingleOrDefault(x => x.Id == id);
            if (project == null)
            {
                return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Project not found!"));
            }

            var projectDTO = new ProjectDetailDTO
            {
                Id = project.Id,
                UserId = project.UserId,
                CategoryId = project.CategoryId,
                Username = project.User.Username,
                Category = project.Category.Name,
                Title = project.Title,
                ImageLink = project.ImageLink,
                Status = project.Status.ToString(),
                Description = project.Description,
                TargetFund = project.TargetFund,
                CurrentFund = project.CurrentFund,
                CreatedDate = project.CreatedDate,
                Deadline = project.Deadline,

            };

            return Ok(projectDTO);
        }
        public SearchProjectsResponse SearchProjects(SearchProjectsRequest request)
        {
            int start = request.CurrentPage * request.PageCount + 1 - request.PageCount;
            int end   = request.CurrentPage * request.PageCount;

            string        strSelCount        = " SELECT COUNT(1)  FROM  Projects p";
            string        strOrderby         = string.Format(" ({0}) {1} ", request.OrderExpression, request.OrderDirection);
            string        strSelAttrs        = @" SELECT p.*, (SELECT UserName FROM Users WHERE UserID =P.ModifiedBy) AS ModifiedByUserName, 
                                                (SELECT UserName FROM Users WHERE UserID =P.CreatedBy) AS CreatedByUserName,
                                                (SELECT UserName FROM Users WHERE UserID =P.PMID) AS PMUserName,
                                                (SELECT FirstName FROM Users WHERE UserID =P.PMID) AS PMFirstName,
                                                (SELECT LastName FROM Users WHERE UserID =P.PMID) AS PMLastName,
                                                (select  CompanyName from   Companys where  ComID=p.CompanyID ) as CompanyName  
                                    FROM   Projects p  ";
            string        strSelAttrsOrderBy = string.Format(@" Order BY {0}  ", strOrderby);
            string        strSelPageModel    = string.Format(@"SELECT * FROM(
                                                SELECT ROW_NUMBER() OVER(
                                                Order BY {0}) as  INDEX_ID,p.* , (SELECT UserName FROM Users WHERE UserID =P.ModifiedBy) AS ModifiedByUserName, 
                                                                                    (SELECT UserName FROM Users WHERE UserID =P.CreatedBy) AS CreatedByUserName,
                                                                                    (SELECT UserName FROM Users WHERE UserID =P.PMID) AS PMUserName ,
                                                                                    (SELECT FirstName FROM Users WHERE UserID =P.PMID) AS PMFirstName,
                                                                                    (SELECT LastName FROM Users WHERE UserID =P.PMID) AS PMLastName,
                                                                                    (select  CompanyName from   Companys where  ComID=p.CompanyID ) as CompanyName  
                                                FROM   Projects p   ", strOrderby);
            string        strWherePageModel  = @") NEW_TB  WHERE INDEX_ID BETWEEN @Strat AND  @End;";
            StringBuilder strWhere           = new StringBuilder();

            strWhere.Append(" WHERE 1=1 ");
            switch (request.SearchType)
            {
            case SearchProjectsType.All:
                break;

            case SearchProjectsType.AllExceptAssigned:
                strWhere.Append(" AND  p.[ProjectID] not in (Select ProjectID from ProjectUsers pu where pu.UserID=@UserID)");
                strWhere.Append(" AND (p.Title LIKE @Keywords OR p.ProjectCode LIKE @Keywords )");
                break;

            case SearchProjectsType.List:
                strWhere.Append(" AND (p.Title LIKE @Keywords OR p.ProjectCode LIKE @Keywords )");
                if (request.CompanyID != 0)
                {
                    strWhere.Append(" AND CompanyID=@CompanyID");
                }
                break;

            case SearchProjectsType.Company:
                if (request.CompanyID != 0)
                {
                    strWhere.Append(" AND  p.[CompanyID] = @CompanyID");
                }
                strWhere.Append(" AND (p.Title LIKE @Keywords OR p.ProjectCode LIKE @Keywords )");
                break;

            case SearchProjectsType.CompanyExceptAssigned:
                if (request.CompanyID != 0)
                {
                    strWhere.Append(" AND  p.[CompanyID] = @CompanyID");
                }
                strWhere.Append(" AND (p.Title LIKE @Keywords OR p.ProjectCode LIKE @Keywords )");
                strWhere.Append(" AND  p.[ProjectID] not in (Select ProjectID from ProjectUsers pu where pu.UserID=@UserID)");
                break;

            case SearchProjectsType.SingleInstance:
                strWhere.Append(" AND  p.[ProjectID] = @ProjectID");
                break;

            case SearchProjectsType.ListByUserID:
                strWhere.Append(" AND  p.[ProjectID] in (Select ProjectID from ProjectUsers pu where pu.UserID=@UserID)");
                break;

            case SearchProjectsType.Ticket:
                strWhere.Append(" AND  p.[ProjectID] IN (SELECT   [ProjectID] FROM [Tickets] WHERE [TicketID]=@TicketID)");
                break;

            default: break;
            }

            StringBuilder strSql = new StringBuilder();

            if (request.IsPageModel)
            {
                strSql.Append(strSelCount);
                strSql.Append(strWhere);
                strSql.Append(";");
                strSql.Append(strSelPageModel);
                strSql.Append(strWhere);
                strSql.Append(strWherePageModel);
            }
            else
            {
                strSql.Append(strSelAttrs);
                strSql.Append(strWhere);
                strSql.Append(strSelAttrsOrderBy);
                strSql.Append(";");
            }
            List <ProjectDetailDTO> list;
            SearchProjectsResponse  response = new SearchProjectsResponse();
            Database db = DatabaseFactory.CreateDatabase();

            using (DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()))
            {
                try
                {
                    db.AddInParameter(dbCommand, "UserID", DbType.Int32, request.UserID);
                    db.AddInParameter(dbCommand, "TicketID", DbType.Int32, request.TicketID);
                    db.AddInParameter(dbCommand, "ProjectID", DbType.Int32, request.ProjectID);
                    db.AddInParameter(dbCommand, "CompanyID", DbType.Int32, request.CompanyID);
                    db.AddInParameter(dbCommand, "Keywords", DbType.String, string.Format("%{0}%", request.Keywords.FilterSqlString()));
                    db.AddInParameter(dbCommand, "Strat", DbType.Int32, start);
                    db.AddInParameter(dbCommand, "End", DbType.Int32, end);

                    using (IDataReader dataReader = db.ExecuteReader(dbCommand))
                    {
                        list = new List <ProjectDetailDTO>();
                        if (request.IsPageModel)
                        {
                            if (dataReader.Read())
                            {
                                response.ResultCount = dataReader.GetInt32(0);
                                dataReader.NextResult();
                            }
                        }
                        while (dataReader.Read())
                        {
                            list.Add(ProjectDetailDTO.ReaderBind(dataReader));
                        }
                        response.ResultList = list;
                    }
                }
                catch (Exception ex)
                {
                    WebLogAgent.Write(string.Format("[SQLText:{0},{1}Messages:\r\n{2}]",
                                                    strSql.ToString(),
                                                    base.FormatParameters(dbCommand.Parameters),
                                                    ex.Message));
                }
            }
            return(response);
        }