Skip to content

Commit

Permalink
Merge pull request #37 from bharatdwarkani/bharat
Browse files Browse the repository at this point in the history
Sample DB included and issue fixed
  • Loading branch information
bharatdwarkani authored Dec 29, 2017
2 parents 1e678f8 + 88fe05c commit 7c0b42c
Show file tree
Hide file tree
Showing 15 changed files with 1,167 additions and 171 deletions.
Binary file added Database sample/TaskPlanner.mdf
Binary file not shown.
912 changes: 912 additions & 0 deletions Database sample/TaskPlannerDBSchema.htm

Large diffs are not rendered by default.

Binary file added Database sample/TaskPlanner_log.ldf
Binary file not shown.
Binary file added Database sample/Taskplanner.sql
Binary file not shown.
45 changes: 32 additions & 13 deletions TaskPlanner/Controllers/ProjectController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,9 @@ public JsonResult AddProjectAsync(string description = "", string projectname =
if(id >0)
objects.ProjectId = id;
objects.CreatedBy = User.FindFirstValue(ClaimTypes.NameIdentifier);
var res = new ProjectViewModel().UpdateProjectDetails(objects);
var currentUserEmail = User.Identity.Name;

var res = new ProjectViewModel().UpdateProjectDetails(objects, currentUserEmail);
if (res.IsSuccess)
{
return this.Json(new
Expand Down Expand Up @@ -148,9 +150,13 @@ public JsonResult EditProjectAsync(string projectId = "")
/// Shareproject() - Return the partial view
/// </summary>
/// <returns>partial view</returns>
public PartialViewResult ShareProject()
public PartialViewResult ShareProject(int projectId)
{
var list = ProjectModel.GetProjectSharedList();
var currentUserEmail = User.Identity.Name.ToLower().Trim();



var list = ProjectModel.GetProjectSharedList(projectId, currentUserEmail);
//return this.PartialView("~/Views/Project/_ShareList.cshtml", list);
return this.PartialView("~/Views/Project/_ShareProject.cshtml", list);
}
Expand All @@ -163,13 +169,25 @@ public PartialViewResult ShareProject()
/// <returns></returns>
public JsonResult ShareEmail(int projectId, string email = "")
{
var res = new ProjectViewModel().UpdateProjectPermissionList(projectId, email,true);
var currentUserEmail = User.Identity.Name.ToLower().Trim() ;

email = email.ToLower().Trim();
if (email== currentUserEmail)
return this.Json(new
{
status = true,
message = "Owner already has permission for project."
});



var res = new ProjectViewModel().UpdateProjectPermissionList(projectId, email,true);
if (res.IsSuccess)
{
return this.Json(new
{
status = true,
message = "New project created successfully."
message = "Permission added successfully."
});
}
else
Expand All @@ -181,12 +199,7 @@ public JsonResult ShareEmail(int projectId, string email = "")
});
}
}

public ActionResult GetShareProjectList()
{
var list = ProjectModel.GetProjectSharedList();
return this.PartialView("~/Views/Project/_ShareList.cshtml", list);
}


/// <summary>
///
Expand All @@ -195,8 +208,14 @@ public ActionResult GetShareProjectList()
/// <returns></returns>
public JsonResult RemovePermission(int permissionId)
{
var res = new ProjectViewModel().RemoveProjectPermission(permissionId);
if (res.IsSuccess)

var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

var res = new ProjectViewModel().RemoveProjectPermission(permissionId, userId);



if (res.IsSuccess)
{
return this.Json(new
{
Expand Down
34 changes: 21 additions & 13 deletions TaskPlanner/Models/ProjectModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,34 +18,40 @@ public static ProjectObjects GetProjectList(string filter, string currentUserEma
{
projectList.ProjectListObjects = (from c in context.AspNetUsers.Where(y => (y.Email == currentUserEmail))
from d in context.ProjectPermissions.Where(i => i.IsActive && i.EmailId == currentUserEmail).DefaultIfEmpty()
from a in context.Projects.Where(x => (x.IsActive && (x.ProjectId == d.ProjectId || x.CreatedBy == c.Id)))
from a in context.Projects.Where(x => (x.IsActive && (x.ProjectId == d.ProjectId)))
from b in context.Favourites.Where(y => (y.UserId == c.Id && y.ProjectId == a.ProjectId && y.IsActive))
from owner in context.AspNetUsers.Where(y => (y.Id == a.CreatedBy)
)
select new ProjectListObjects
{
ProjectId = a.ProjectId,
ProjectName = a.ProjectName,
ProjectDescription = a.Description,
CreatedOn = a.CreatedOn,
CreatedBy = c.UserName,
Email = c.Email,
IsOwner = Permission.IsUserOwnerOfProject(currentUserEmail, a.ProjectId)
CreatedBy = owner.Email,
Email = owner.Email,
IsOwner = owner.Email==currentUserEmail
}).Distinct().ToList();
}

else if (filter == "all")
{
projectList.ProjectListObjects = (from b in context.AspNetUsers.Where(i => i.Email == currentUserEmail)
from c in context.ProjectPermissions.Where(z => (z.EmailId == currentUserEmail && z.IsActive)).DefaultIfEmpty()
from a in context.Projects.Where(x => x.IsActive && (x.ProjectId == c.ProjectId || x.CreatedBy == b.Id))
var projPermission = (from c in context.ProjectPermissions where c.EmailId == currentUserEmail && c.IsActive select c.ProjectId).ToList();

if(projPermission!=null && projPermission.Count>0)
projectList.ProjectListObjects = (
from a in context.Projects.Where(x => x.IsActive && projPermission.Contains(x.ProjectId ))
from b in context.AspNetUsers.Where(i => i.Id == a.CreatedBy)

select new ProjectListObjects
{
ProjectId = a.ProjectId,
ProjectName = a.ProjectName,
ProjectDescription = a.Description,
CreatedOn = a.CreatedOn,
CreatedBy = b.UserName,
CreatedBy = b.Email,
Email = b.Email,
IsOwner = Permission.IsUserOwnerOfProject(currentUserEmail, a.ProjectId)
IsOwner = b.Email == currentUserEmail
}).Distinct().ToList();
}
else
Expand All @@ -59,9 +65,9 @@ from a in context.Projects.Where(x => (x.IsActive && x.CreatedBy == b.Id))
ProjectName = a.ProjectName,
ProjectDescription = a.Description,
CreatedOn = a.CreatedOn,
CreatedBy = b.UserName,
CreatedBy = b.Email,
Email = b.Email,
IsOwner = Permission.IsUserOwnerOfProject(currentUserEmail, a.ProjectId)
IsOwner = true
}).Distinct().ToList();
}

Expand Down Expand Up @@ -121,12 +127,14 @@ from b in context.AspNetUsers.Where(y => y.Id == a.CreatedBy)
///
/// </summary>
/// <returns></returns>
public static ProjectShareObjects GetProjectSharedList()
public static ProjectShareObjects GetProjectSharedList(int projectId,string emailid)
{
var list = new ProjectShareObjects();
using (var context = new TaskPlannerEntities())
{
list.ProjectShareListObjects = (from a in context.ProjectPermissions.Where(x => (x.IsActive))
list.ProjectShareListObjects = (from a in context.ProjectPermissions.Where(x => (x.IsActive) && x.ProjectId== projectId
&& x.EmailId!=emailid
)
select new ProjectShareListObjects
{
PermissionId = a.PermissionId,
Expand Down
39 changes: 34 additions & 5 deletions TaskPlanner/Models/ProjectViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@

public interface IProjectViewModel
{
TransactionResult UpdateProjectDetails(ProjectListObjects newProjectDetails);
TransactionResult UpdateProjectDetails(ProjectListObjects newProjectDetails,string email);
TransactionResult DeleteProject(int projectId);
TransactionResult UpdateFavouriteList(int projectId, string userId, bool isFavouriteListAdded);
TransactionResult UpdateProjectPermissionList(int projectId, string emailId, bool isProjectPermissionListAdded);
}

public class ProjectViewModel : IProjectViewModel
{
public TransactionResult UpdateProjectDetails(ProjectListObjects newProjectDetails)
public TransactionResult UpdateProjectDetails(ProjectListObjects newProjectDetails,string email)
{
var result = new TransactionResult();

Expand Down Expand Up @@ -48,8 +48,20 @@ public TransactionResult UpdateProjectDetails(ProjectListObjects newProjectDetai
IsActive = true
};
context.Projects.Add(newProject);

var projectPermissionListObj = new ProjectPermission()
{
ProjectId = newProject.ProjectId,
EmailId = email,
UpdatedOn = DateTime.Now,
IsActive = true
};
context.ProjectPermissions.Add(projectPermissionListObj);

}



context.SaveChanges();
}
result.IsSuccess = true;
Expand Down Expand Up @@ -148,7 +160,9 @@ public TransactionResult UpdateProjectPermissionList(int projectId, string email
using (var context = new TaskPlannerEntities())
{
var projectPermissionObj = (from projectPermissionDetails in context.ProjectPermissions.Where(i => i.ProjectId == projectId && i.EmailId == emailId)
select projectPermissionDetails).ToList();
select projectPermissionDetails).ToList();



if (isProjectPermissionListAdded)
{
Expand Down Expand Up @@ -197,7 +211,7 @@ public TransactionResult UpdateProjectPermissionList(int projectId, string email
/// </summary>
/// <param name="permissionId"></param>
/// <returns></returns>
public TransactionResult RemoveProjectPermission(int permissionId)
public TransactionResult RemoveProjectPermission(int permissionId,string userid)
{
var result = new TransactionResult();
try
Expand All @@ -207,7 +221,22 @@ public TransactionResult RemoveProjectPermission(int permissionId)
var projectPermissionObj = (from projectPermissionDetails in context.ProjectPermissions.Where(i => i.PermissionId == permissionId)
select projectPermissionDetails).FirstOrDefault();
projectPermissionObj.IsActive = false;
context.SaveChanges();

var favProjects = (from f in context.Favourites
where f.IsActive && projectPermissionObj.ProjectId == f.ProjectId && f.UserId == userid
select
f).ToList();

if (favProjects != null && favProjects.Count > 0)
{
foreach (var item in favProjects)
{
item.IsActive = false;
}
}


context.SaveChanges();
}

result.IsSuccess = true;
Expand Down
2 changes: 1 addition & 1 deletion TaskPlanner/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env)

routes.MapRoute(
name: "Share project",
template: "project/shareproject",
template: "project/shareproject/{projectId?}",
defaults: new { controller = "Project", action = "ShareProject" });

routes.MapRoute(
Expand Down
1 change: 1 addition & 0 deletions TaskPlanner/TaskPlanner.csproj.user
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@
<WebStackScaffolding_IsReferencingScriptLibrariesSelected>False</WebStackScaffolding_IsReferencingScriptLibrariesSelected>
<WebStackScaffolding_IsAsyncSelected>False</WebStackScaffolding_IsAsyncSelected>
<WebStackScaffolding_ViewDialogWidth>600</WebStackScaffolding_ViewDialogWidth>
<NameOfLastUsedPublishProfile>CustomProfile</NameOfLastUsedPublishProfile>
</PropertyGroup>
</Project>
8 changes: 5 additions & 3 deletions TaskPlanner/Views/Project/_ShareProject.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
</div>
</form>

<div>
@*<div>
<div class="e-float-input" style="margin-top: 0px">
<input type="text" id="shareLinks">
</div>
</div>
</div>*@

<style>
tr {
Expand Down Expand Up @@ -89,6 +89,8 @@

@if (Model != null && Model.ProjectShareListObjects != null && Model.ProjectShareListObjects.Count > 0)
{
<div style="font-weight:400!important;color:rgba(0,0,0,0.87)!important ">Users who has access to this project</div>

<table style="width: 100%; margin-top:20px;">
<tbody>
@foreach (var detail in Model.ProjectShareListObjects)
Expand All @@ -110,5 +112,5 @@
}
else
{
<span style="margin-left: 7px;">No results found</span>
<span style="margin-left: 5px;margin-top:10px">No user other than you have access to this project. To share this project add gmail id of user above. Once added user can access this project</span>
}
11 changes: 0 additions & 11 deletions TaskPlanner/appsettings - Copy.json

This file was deleted.

2 changes: 1 addition & 1 deletion TaskPlanner/appsettings.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"ConnectionStrings": {
"DefaultConnection": "user id=TaskPlanner;password=TaskPlanner;Server=45.76.60.143,4852;Database=TaskPlanner;"
"DefaultConnection": "user id=usernameofdb;password=passwordofdb;Server=Servername;Database=TaskPlanner;"
},
"Logging": {
"IncludeScopes": false,
Expand Down
14 changes: 13 additions & 1 deletion TaskPlanner/wwwroot/js/ej2/ej2-base.umd.min.js

Large diffs are not rendered by default.

25 changes: 13 additions & 12 deletions TaskPlanner/wwwroot/ts/Stories/Stories.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,20 @@ let storiesList: Grid = new Grid({
editSettings: { allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'normal' },
groupSettings: { showDropArea: true },
columns: [
{ field: 'StoryId', headerText: 'Story Id', showInColumnChooser: false, isPrimaryKey: true, type: "number", visible: false },
{ field: 'TaskId', headerText: 'Task Id', type: "number" },
{ field: 'Title', headerText: 'Title', type: "string", validationRules: { required: true } },
{ field: 'SortOrder', headerText: 'Sort Order', type: "number", visible: false },
{ field: 'StoryId', headerText: 'Story ID', showInColumnChooser: false, isPrimaryKey: true, type: "number", visible: false },
{ field: 'TaskId', headerText: 'Task ID', type: "number", visible: false },
{ field: 'Title', headerText: 'Title',width:'150px' , type: "string", validationRules: { required: true } },
{ field: 'ThemeName', headerText: 'Theme', type: "string" },
{ field: 'EpicName', headerText: 'Epic', type: "string" },
{ field: 'Milestone', headerText: 'Milestone', type: "string", visible: false },
{ field: 'StoryPoints', headerText: 'Estimate', type: "number" },
{ field: 'Milestone', headerText: 'Milestone', type: "string", visible: false },
{ field: 'Benifit', headerText: 'Benefit', type: "number", visible: true },
{ field: 'Penalty', headerText: 'Penalty', type: "number", visible: true },
{ field: 'Priority', headerText: 'Priority', type: "string", visible: true },
{ field: 'Release', headerText: 'Release', type: "string" },
{
field: 'Status', headerText: 'Status', type: "string", width: 150, edit: {
field: 'Status', headerText: 'Status', type: "string", width: 150, visible: true, edit: {
create: () => {
statusElem = document.createElement('input');
return statusElem;
Expand All @@ -69,13 +74,9 @@ let storiesList: Grid = new Grid({
});
statusObj.appendTo(statusElem);
}
} },
{ field: 'Priority', headerText: 'Priority', type: "string", visible: false },
{ field: 'Benifit', headerText: 'Benefit', type: "number", visible: false },
{ field: 'Penalty', headerText: 'Penalty', type: "number", visible: false },
{ field: 'StoryPoints', headerText: 'Story Points', type: "number" },
{ field: 'SortOrder', headerText: 'Sort Order', type: "number", visible: false },
{ field: 'SprintName', headerText: 'Sprint', type: "string" },
}
},
{ field: 'SprintName', headerText: 'Sprint', type: "string", visible: false },
{ field: 'AssigneeName', headerText: 'Assignee', type: "string", visible: false },
{ field: 'Tag', headerText: 'Label', type: "string", visible: false }
],
Expand Down
Loading

0 comments on commit 7c0b42c

Please sign in to comment.