private async Task <IHttpActionResult> PutAsync(TEntity entity, Func <TEntity, Task <TEntity> > lambda) { return(await ActionHelper.TryCatchWithLoggerAsync(async() => { if (!_service.Queryable().Any(f => f.UniqueId == entity.UniqueId)) { return NotFound(); } _unitOfWork.BeginTransaction(); if (entity is IWorkflowContentBase) { IWorkflowContentBase workflow = (IWorkflowContentBase)entity; WorkflowActions = workflow.WorkflowActions ?? new List <IWorkflowAction>(); WorkflowName = workflow.WorkflowName; IdWorkflowActivity = workflow.IdWorkflowActivity; WorkflowAutoComplete = workflow.WorkflowAutoComplete; } entity = await lambda(entity); bool result = await _unitOfWork.SaveAsync(); if (result) { AfterSave(entity); return Ok(entity); } return InternalServerError(); }, BadRequest, Content, InternalServerError, _logger, LogCategories)); }
private async Task <IHttpActionResult> DeleteAsync([FromBody] TEntity entity, Func <TEntity, Task <bool> > lambda) { return(await ActionHelper.TryCatchWithLoggerAsync(async() => { TEntity entityToDelete = (SetEntityIncludeOnDelete(_unitOfWork.Repository <TEntity>().Query(f => f.UniqueId == entity.UniqueId, true)).SelectAsQueryable()).SingleOrDefault(); if (entityToDelete == null) { return NotFound(); } _unitOfWork.BeginTransaction(); if (entity is IWorkflowContentBase) { IWorkflowContentBase workflow = (IWorkflowContentBase)entity; WorkflowActions = workflow.WorkflowActions ?? new List <IWorkflowAction>(); WorkflowName = workflow.WorkflowName; IdWorkflowActivity = workflow.IdWorkflowActivity; WorkflowAutoComplete = workflow.WorkflowAutoComplete; } await lambda(entity); await _unitOfWork.SaveAsync(); AfterSave(entityToDelete); return Ok(entity); }, BadRequest, Content, InternalServerError, _logger, LogCategories)); }
private async Task <IHttpActionResult> PostAsync(TEntity entity, Func <TEntity, Task <TEntity> > lambda) { return(await ActionHelper.TryCatchWithLoggerAsync(async() => { _unitOfWork.BeginTransaction(PostIsolationLevel); if (entity is IWorkflowContentBase) { IWorkflowContentBase workflow = (IWorkflowContentBase)entity; WorkflowActions = workflow.WorkflowActions ?? new List <IWorkflowAction>(); WorkflowName = workflow.WorkflowName; IdWorkflowActivity = workflow.IdWorkflowActivity; WorkflowAutoComplete = workflow.WorkflowAutoComplete; } entity = await lambda(entity); bool result = await _unitOfWork.SaveAsync(); if (result) { AfterSave(entity); return Ok(entity); } return InternalServerError(); }, BadRequest, Content, InternalServerError, _logger, LogCategories)); }