public override async Task <SaveResponse <IAuditWorkflow> > SaveAsync(IAuditWorkflow item) { var response = new SaveResponse <IAuditWorkflow>(); try { var sql = GetMergeStatement(); using (var connection = ConnectionFactory.GetConnection()) { using (var trans = connection.BeginTransaction()) { // Save workflow var workflowDto = await connection.QuerySingleAsync <WorkflowDto>(sql, Dto.FromModel(item), trans); // Save workflow steps var workflowStepDtos = item.Steps.Values .Select(r => { var dto = (WorkflowStepDto) new WorkflowStepDto() .FromModel(r); dto.WorkflowId = workflowDto.Id; return(dto); }); await connection.ExecuteAsync(GetWorkflowStepMergeStatement(), workflowStepDtos, trans); trans.Commit(); // Get the workflow now that the IDs have been created var getResponse = await GetByIdAsync(workflowDto.Id); response.Join <SaveResponse <IAuditWorkflow> >(getResponse); response.Content = getResponse.Content; response.Message = $@"RuleSet: {item.Name} record was inserted/updated."; } } } catch (Exception e) { var message = $@"Error saving RuleSet information."; LogManager.LogError(e, message); response.AddError(e); Console.WriteLine(e); } return(response); }
public async Task <SaveResponse <IClient> > SaveAsync(IClient client) { var response = new SaveResponse <IClient>(); try { // Validate Information before saving response.FromValidationResult(await ValidateAsync(client)); // 4. Begin transaction using (var scope = new TransactionScope(TransactionScopeOption.Required)) { // 5. Save Client response = _clientRepository.SaveAsync(client).Result; if (response.IsSuccessful) { // 6. Save Addresses var addressResponse = _addressApplicationService.SaveAsync(client.Address).Result; // 7. Save Contacts var contactResponse = _contactApplicationService .SaveAllAsync(client.Contacts as IReadOnlyList <IContact>).Result; response.Join <SaveResponse>(addressResponse) .Join <SaveResponse>(contactResponse); } if (response.IsSuccessful) { scope.Complete(); } } } catch (Exception ex) { Console.WriteLine(ex); response.AddError(ex); _logManager.LogError(ex, "Error saving client"); } return(response); }
public async Task <SaveResponse> RegisterUserAsync(RegisterRequest request) { var response = new SaveResponse(); try { // 1. check if valid policy number and pin. var validResponse = await _policyAgentService.IsValidPolicyAuditAsync(request.Identity.Pin, request.Identity.PolicyNumber); if (validResponse.IsSuccessful && validResponse.Content) { // 2. Save user var userResponse = await _userRepository.SaveAsync(request.Identity); response.Join <SaveResponse>(userResponse); if (userResponse.IsSuccessful) { // 3. Create and save the agent var agent = _policyAgentService.CreateAgent(userResponse.Content); agent.PolicyNumber = request.Identity.PolicyNumber; response = await _policyAgentService.SaveAgentInformationAsync(agent); } else { response.AddError($@"Unable to register user for Pin: {request.Identity.PolicyNumber}, Policy Number: { request.Identity.Pin }. The Pin/Policy Number does not match our records."); } } } catch (Exception e) { Console.WriteLine(e); response.AddError(e); } return(response); }
public async Task <SaveResponse <IReadOnlyList <IClient> > > SaveAllAsync(IReadOnlyList <IClient> clients) { var saveResponse = new SaveResponse <IReadOnlyList <IClient> >(); try { foreach (var client in clients) { var response = await SaveAsync(client); saveResponse .Join <SaveResponse <IReadOnlyList <IClient> > >(response); } } catch (Exception ex) { Console.WriteLine(ex); saveResponse.AddError(ex); _logManager.LogError(ex, "Error saving clients"); } return(saveResponse); }