public void Add(ProjectTeamData projectTeamData)
        {
            _unitOfWork.BeginTransaction();

            _projectTeamRepository.Create(projectTeamData);

            _unitOfWork.Commit();
        }
        public void Delete(ProjectTeamData projectTeamData)
        {
            _unitOfWork.BeginTransaction();

            ProjectTeamData projectTeamDataForDelete = _projectTeamRepository
                                                       .GetAll()
                                                       .First(pt =>
                                                              pt.UserData.Id == projectTeamData.UserData.Id &&
                                                              pt.ProjectData.Id == projectTeamData.ProjectData.Id);

            _projectTeamRepository.Delete(projectTeamDataForDelete.Id);

            _unitOfWork.Commit();
        }
        public void ChangeUserRole(ProjectTeamData projectTeamData)
        {
            _unitOfWork.BeginTransaction();

            ProjectTeamData projectTeamDataForChangeUserRole = _projectTeamRepository
                                                               .GetAll()
                                                               .First(pt =>
                                                                      pt.UserData.Id == projectTeamData.UserData.Id &&
                                                                      pt.ProjectData.Id == projectTeamData.ProjectData.Id);

            projectTeamDataForChangeUserRole.UserRole = projectTeamData.UserRole;

            _projectTeamRepository.Update(projectTeamDataForChangeUserRole);

            _unitOfWork.Commit();
        }
        public object RemoveMemberFromProject(RemoveMemberViewModel removeMemberViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseResponse(ResponseStatus.ValidationError.ToString(), ModelState.Values.ToList()[0].Errors[0].ErrorMessage)));
            }

            CurrentUserInfo currentUserInfo = _tokenHelper.GetUserInfo();

            if (!_projectLogic.IsProjectExist(currentUserInfo.Id, removeMemberViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, new BaseResponse(ResponseStatus.Notfound.ToString(), ResponseMessagesModel.ProjectNotFound)));
            }

            if (_projectLogic.IsUserProjectCreator(currentUserInfo.Id, removeMemberViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new BaseResponse(ResponseStatus.ValidationError.ToString(), ResponseMessagesModel.PermissionDenied)));
            }

            if (!_projectLogic.IsUserAdminOrCreatorOfProject(currentUserInfo.Id, removeMemberViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new BaseResponse(ResponseStatus.ValidationError.ToString(), ResponseMessagesModel.PermissionDenied)));
            }

            if (!_accountLogic.IsUserExist(removeMemberViewModel.UserId))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, new BaseResponse(ResponseStatus.Notfound.ToString(), ResponseMessagesModel.UserIsNotFound)));
            }

            if (!_projectTeamLogic.IsUserExistInProject(removeMemberViewModel.UserId, removeMemberViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseResponse(ResponseStatus.ValidationError.ToString(), ResponseMessagesModel.UserIsNotFound)));
            }

            ProjectTeamData projectTeamData = RemoveMemberViewModel.GetProjectTeamData(removeMemberViewModel);

            _projectTeamLogic.Delete(projectTeamData);

            return(Request.CreateResponse(HttpStatusCode.OK, new BaseResponse(ResponseStatus.Success.ToString(),
                                                                              ResponseMessagesModel.Success)));
        }
        protected void btnUpdate_Click(object sender, EventArgs e)
        {
            ProjectTeamData ptd = new ProjectTeamData();
            Common common = new Common();
            string message;
            try
            {
                for (int i = 0; i < dgTop20Projects.Rows.Count; i++)
                {
                    CheckBox joinCheckBox = checked((CheckBox)dgTop20Projects.Rows[i].FindControl("JoinProject"));
                    HyperLink titleHyperlink = checked((HyperLink)dgTop20Projects.Rows[i].FindControl("hlProjectTitle"));
                    if (joinCheckBox.Checked)
                    {

                        string subject = "A user has shown interest in your Project: " + titleHyperlink.Text + ", posted on Beta Job Jar website";

                        //Extract the project Id from the title hyperlink
                        string projectID = titleHyperlink.NavigateUrl.ToString();
                        projectID = projectID.Substring(31);
                        int length = projectID.Length;
                        length = length - 1;
                        projectID = projectID.Substring(0, length);

                        ptd.AddTeamMember(Convert.ToInt32(projectID), titleHyperlink.Text, dgTop20Projects.Rows[i].Cells[2].Text, Convert.ToInt32(hidUserId.Value), ((TextBox)dgTop20Projects.Rows[i].FindControl("Comments")).Text);
                        string body = "Hi, \n The below user has shown interest in your Project:" + titleHyperlink.Text + " (https://betasandbox.accenture.com/BetaJobJar/Post%20Project.aspx?mode=edit&projectid=" + projectID + ") , posted on Beta Job Jar website. \n\n Name :" + Common.GetUserName() + "\n View People Page Profile (https://people.accenture.com/personal/MySite/Person.aspx?accountname=DIR\\" + Common.GetUserName() + ") \n\n Please visit the website to add the member to your team. \n \n Thanks \n Beta Job Jar Team";

                        common.SendMail(dgTop20Projects.Rows[i].Cells[2].Text + "@accenture.com", subject, body);
                    }
                }
                Response.Redirect(Request.Url.ToString());
            }

            catch (Exception exc)
            {
                message = exc.Message.ToString();
                ScriptManager.RegisterStartupScript(this, typeof(string), "Error", "alert('" + message + "');", true);
            }
        }
        public object AddMemberToProject(CreateProjectTeamViewModel createProjectTeamViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseResponse(ResponseStatus.ValidationError.ToString(), ModelState.Values.ToList()[0].Errors[0].ErrorMessage)));
            }

            CurrentUserInfo currentUserInfo = _tokenHelper.GetUserInfo();

            if (!_projectLogic.IsProjectExist(currentUserInfo.Id, createProjectTeamViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, new BaseResponse(ResponseStatus.Notfound.ToString(), ResponseMessagesModel.ProjectNotFound)));
            }

            if (!_projectLogic.IsUserAdminOrCreatorOfProject(currentUserInfo.Id, createProjectTeamViewModel.ProjectId) || createProjectTeamViewModel.UserRole == UserRole.Creator)
            {
                return(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new BaseResponse(ResponseStatus.ValidationError.ToString(), ResponseMessagesModel.PermissionDenied)));
            }

            if (!_accountLogic.IsUserExist(createProjectTeamViewModel.EmailAddress.ToLower()))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, new BaseResponse(ResponseStatus.Notfound.ToString(), ResponseMessagesModel.UserIsNotFound)));
            }

            if (_projectTeamLogic.IsUserExistInProject(createProjectTeamViewModel.EmailAddress.ToLower(), createProjectTeamViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseResponse(ResponseStatus.ValidationError.ToString(), ResponseMessagesModel.UserAlreadyExistInProject)));
            }

            ProjectTeamData projectTeamData = CreateProjectTeamViewModel.GetProjectTeamData(
                _accountLogic.GetUser(createProjectTeamViewModel.EmailAddress).Id, createProjectTeamViewModel);

            _projectTeamLogic.Add(projectTeamData);

            return(Request.CreateResponse(HttpStatusCode.OK, new BaseResponse(ResponseStatus.Success.ToString(),
                                                                              ResponseMessagesModel.Success)));
        }