forked from Baud-UCS/DEF
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added controllers, views, queries etc for Positions and Roles (not co…
…mpilable yet, though). Relates to Baud-UCS#27
- Loading branch information
Showing
25 changed files
with
638 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
18 changes: 18 additions & 0 deletions
18
...erver/DeploymentFramework/BusinessLogic/Domain/Security/Contracts/IPositionsRepository.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Entities; | ||
|
||
namespace Baud.Deployment.BusinessLogic.Domain.Security.Contracts | ||
{ | ||
public interface IPositionsRepository | ||
{ | ||
IQueryable<Position> GetPositions(); | ||
|
||
Position GetPositionDetail(short id); | ||
|
||
void UpdatePosition(short id, Position position); | ||
} | ||
} |
18 changes: 18 additions & 0 deletions
18
src/Server/DeploymentFramework/BusinessLogic/Domain/Security/Contracts/IRolesRepository.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Entities; | ||
|
||
namespace Baud.Deployment.BusinessLogic.Domain.Security.Contracts | ||
{ | ||
public interface IRolesRepository | ||
{ | ||
IQueryable<Role> GetRoles(); | ||
|
||
Role GetRoleDetail(short id); | ||
|
||
void UpdateRole(short id, Role role); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
src/Server/DeploymentFramework/BusinessLogic/Domain/Security/Queries/PositionQueries.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Entities; | ||
|
||
namespace Baud.Deployment.BusinessLogic.Domain.Security.Queries | ||
{ | ||
public static class PositionQueries | ||
{ | ||
public static IQueryable<Position> FilterByID(this IQueryable<Position> query, int positionID) | ||
{ | ||
return query.Where(x => x.ID == positionID); | ||
} | ||
|
||
public static IQueryable<Position> OnlyActive(this IQueryable<Position> query) | ||
{ | ||
return query.Where(x => !x.IsActive); | ||
} | ||
|
||
public static IQueryable<Position> OnlyInactive(this IQueryable<Position> query) | ||
{ | ||
return query.Where(x => x.IsActive); | ||
} | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
src/Server/DeploymentFramework/BusinessLogic/Domain/Security/Queries/RoleQueries.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Entities; | ||
|
||
namespace Baud.Deployment.BusinessLogic.Domain.Security.Queries | ||
{ | ||
public static class RoleQueries | ||
{ | ||
public static IQueryable<Role> FilterByID(this IQueryable<Role> query, int roleID) | ||
{ | ||
return query.Where(x => x.ID == roleID); | ||
} | ||
|
||
public static IQueryable<Role> OnlyActive(this IQueryable<Role> query) | ||
{ | ||
return query.Where(x => !x.IsActive); | ||
} | ||
|
||
public static IQueryable<Role> OnlyInactive(this IQueryable<Role> query) | ||
{ | ||
return query.Where(x => x.IsActive); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
src/Server/DeploymentFramework/Database/Security/PositionsRepository.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Contracts; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Entities; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Queries; | ||
|
||
namespace Baud.Deployment.Database.Security | ||
{ | ||
public class PositionsRepository : RepositoryBase<SecurityDbContext>, IPositionsRepository | ||
{ | ||
public PositionsRepository(SecurityDbContext context) | ||
: base(context) | ||
{ | ||
} | ||
|
||
public IQueryable<Position> GetPositions() | ||
{ | ||
return Context.Positions; | ||
} | ||
|
||
public Position GetPositionDetail(short id) | ||
{ | ||
return Context.Positions.FilterByID(id).FirstOrDefault(); | ||
} | ||
|
||
public void UpdatePosition(short id, Position position) | ||
{ | ||
position.ID = id; | ||
|
||
Context.AttachAsModified(position, | ||
x => x.Name, | ||
x => x.IsActive); | ||
} | ||
} | ||
} |
38 changes: 38 additions & 0 deletions
38
src/Server/DeploymentFramework/Database/Security/RolesRepository.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Contracts; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Entities; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Queries; | ||
|
||
namespace Baud.Deployment.Database.Security | ||
{ | ||
public class RolesRepository : RepositoryBase<SecurityDbContext>, IRolesRepository | ||
{ | ||
public RolesRepository(SecurityDbContext context) | ||
: base(context) | ||
{ | ||
} | ||
|
||
public IQueryable<Role> GetRoles() | ||
{ | ||
return Context.Roles; | ||
} | ||
|
||
public Role GetRoleDetail(short id) | ||
{ | ||
return Context.Roles.FilterByID(id).FirstOrDefault(); | ||
} | ||
|
||
public void UpdateRole(short id, Role role) | ||
{ | ||
role.ID = id; | ||
|
||
Context.AttachAsModified(role, | ||
x => x.Name, | ||
x => x.IsActive); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
93 changes: 93 additions & 0 deletions
93
src/Server/DeploymentFramework/Web/Areas/Security/Controllers/PositionsController.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Web; | ||
using System.Web.Mvc; | ||
using Baud.Deployment.BusinessLogic.Domain.Security.Contracts; | ||
using Baud.Deployment.Web.Areas.Security.Models.Positions; | ||
using Baud.Deployment.Web.Framework.Web; | ||
|
||
namespace Baud.Deployment.Web.Areas.Security.Controllers | ||
{ | ||
public partial class PositionsController : Controller | ||
{ | ||
private readonly Func<ISecurityUow> _securityUow; | ||
|
||
public PositionsController(Func<ISecurityUow> securityUow) | ||
{ | ||
_securityUow = securityUow; | ||
} | ||
|
||
public ActionResult Index(IndexFilter filter, PagingData paging) | ||
{ | ||
paging.PageSize = 2; // only for testing | ||
|
||
ViewBag.Filter = filter; | ||
|
||
using (var uow = _securityUow()) | ||
{ | ||
var positionsQuery = uow.Positions.GetPositions(); | ||
positionsQuery = filter.Apply(positionsQuery); | ||
var data = positionsQuery.ToPagedList(paging); | ||
|
||
return View(data); | ||
} | ||
} | ||
|
||
public virtual ActionResult Detail(short id) | ||
{ | ||
using (var uow = _securityUow()) | ||
{ | ||
var position = uow.Positions.GetPositionDetail(id); | ||
|
||
if (position == null) | ||
{ | ||
return HttpNotFound(); | ||
} | ||
|
||
return View(position); | ||
} | ||
} | ||
|
||
public virtual ActionResult Edit(short id) | ||
{ | ||
using (var uow = _securityUow()) | ||
{ | ||
var position = uow.Positions.GetPositionDetail(id); | ||
|
||
if (position == null) | ||
{ | ||
return HttpNotFound(); | ||
} | ||
|
||
return View(position); | ||
} | ||
} | ||
// TODO: T4 template for Actions | ||
[HttpPost] | ||
[ValidateAntiForgeryToken] | ||
public virtual ActionResult Edit(short id, FormCollection form) | ||
{ | ||
using (var uow = _securityUow()) | ||
{ | ||
var position = uow.Positions.GetPositionDetail(id); | ||
|
||
if (position == null) | ||
{ | ||
return HttpNotFound(); | ||
} | ||
|
||
if (!TryUpdateModel(position)) | ||
{ | ||
return View(position); | ||
} | ||
|
||
uow.Positions.UpdatePosition(id, position); | ||
uow.Commit(); | ||
|
||
// TODO add confirmation toast message | ||
return RedirectToAction(Actions.Detail(id)); | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.