public async Task TryEnter(EnterLeaveDto dto) { await Execute(async() => { using (UnitOfWork db = new UnitOfWork()) { EnterLeavePointEntity enterLeavePoint = await db.GetRepo <EnterLeavePointEntity>().Get(dto.EnterLeavePointId.Value); AccountEntity account = await db.GetRepo <AccountEntity>().Get(dto.AccountId.Value); EnterLeavePointEventEntity enterLeavePointEvent = new EnterLeavePointEventEntity() { account_id = account.id, enter_leave_point_id = enterLeavePoint.id, is_enter = true, timespan = DateTime.Now }; NotPermittedException ex = null; if (account.Roles.SelectMany(r => r.ManufactoryPermissions).Any(m => m.id == enterLeavePoint.Manufactory.id)) { enterLeavePointEvent.log = $"Enter to Manufactory #{enterLeavePoint.Manufactory.id} via Enter Point ${enterLeavePoint.id} by Account #{account.id}: SUCCESS"; } else { enterLeavePointEvent.log = $"Enter to Manufactory #{enterLeavePoint.Manufactory.id} via Enter Point ${enterLeavePoint.id} by Account #{account.id}: ACCESS DENIED"; ex = new NotPermittedException(enterLeavePointEvent.log); } await db.GetRepo <EnterLeavePointEventEntity>().Create(enterLeavePointEvent); await db.Save(); if (ex != null) { throw ex; } } }); }
public async Task <HttpResponseMessage> TryLeave([FromBody] EnterLeaveDto dto) { return(await Execute(d => LocationService.TryLeave(d), dto)); }