Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }