Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.27 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection.Metadata;
  5. using System.Threading.Tasks;
  6. using FunkyBank.Core;
  7. using FunkyBank.DataAccess.Core.Interfaces;
  8. using FunkyBank.DataAccess.Core.Models;
  9. using FunkyBank.DTO.Models;
  10. using FunkyBank.DTO.Requests;
  11. using FunkyBank.DTO.Responses;
  12. using Microsoft.Extensions.Logging;
  13.  
  14. namespace FunkyBank.Services
  15. {
  16. public class CustomerService : ICustomerService
  17. {
  18. private readonly ICustomerRepository _customerRepository;
  19. private readonly ILogger<CustomerService> _logger;
  20.  
  21. public CustomerService(ICustomerRepository customerRepository, ILogger<CustomerService> logger)
  22. {
  23. if (customerRepository == null)
  24. {
  25. throw new ArgumentNullException(nameof(customerRepository));
  26. }
  27.  
  28. if (logger == null)
  29. {
  30. throw new ArgumentNullException(nameof(logger));
  31. }
  32.  
  33. _customerRepository = customerRepository;
  34. _logger = logger;
  35. }
  36.  
  37. public async Task<OperationResult<CreateCustomerResponse>> CreateCustomerAsync(CreateCustomerRequest request)
  38. {
  39. _logger.LogInformation($"Calling {nameof(CreateCustomerAsync)}");
  40.  
  41. var isValid = request.Validate();
  42. if (!isValid)
  43. {
  44. _logger.LogError("Error: Invalid request");
  45. return OperationResult<CreateCustomerResponse>.Failure("Invalid request. Cannot create customer");
  46. }
  47.  
  48. var operationResult = await _customerRepository.CreateCustomerAsync(new Customer
  49. {
  50. Name = request.Name,
  51. Address = request.Address
  52. }).ConfigureAwait(false);
  53.  
  54. if (operationResult.Status)
  55. {
  56. _logger.LogInformation("Customer created successfully");
  57.  
  58. var createdCustomer = operationResult.Data;
  59. return OperationResult<CreateCustomerResponse>.Success(new CreateCustomerResponse(new CustomerDisplayModel(createdCustomer.Name, createdCustomer.Address)));
  60. }
  61.  
  62. _logger.LogInformation("Error: Cannot create customer");
  63. return OperationResult<CreateCustomerResponse>.Failure("Error: Cannot create customer");
  64. }
  65.  
  66. public async Task<OperationResult<UpdateCustomerResponse>> UpdateCustomerAsync(UpdateCustomerRequest request)
  67. {
  68. _logger.LogInformation($"Calling {nameof(UpdateCustomerAsync)}");
  69.  
  70. var isValid = request.Validate();
  71. if (!isValid)
  72. {
  73. _logger.LogError("Error: Invalid request, cannot update customer");
  74. return OperationResult<UpdateCustomerResponse>.Failure("Invalid request, cannot update customer");
  75. }
  76.  
  77. var operationResult = await _customerRepository.UpdateCustomerAsync(new Customer
  78. {
  79. Id = request.Id,
  80. Name = request.Name,
  81. Address = request.Address
  82. }).ConfigureAwait(false);
  83.  
  84. if (operationResult.Status)
  85. {
  86. _logger.LogInformation("Customer updated successfully");
  87.  
  88. var updatedCustomer = operationResult.Data;
  89. return OperationResult<UpdateCustomerResponse>.Success(new UpdateCustomerResponse(new CustomerDisplayModel(updatedCustomer.Name, updatedCustomer.Address)));
  90. }
  91.  
  92. _logger.LogError("Error: Cannot update customer");
  93. return OperationResult<UpdateCustomerResponse>.Failure("Cannot update customer");
  94. }
  95.  
  96. public async Task<OperationResult<GetCustomersResponse>> GetCustomersAsync(GetCustomersRequest request)
  97. {
  98. var isValid = request.Validate();
  99. if (!isValid)
  100. {
  101. _logger.LogError("Error: Invalid request");
  102. return OperationResult<GetCustomersResponse>.Failure("Invalid request");
  103. }
  104.  
  105. var operationResult = await _customerRepository.GetCustomersAsync().ConfigureAwait(false);
  106.  
  107. if (operationResult.Status)
  108. {
  109. _logger.LogInformation("Retrieved customers successfully");
  110.  
  111. var displayCustomers = operationResult.Data.Select(x=>new CustomerDisplayModel(x.Name, x.Address));
  112. return OperationResult<GetCustomersResponse>.Success(new GetCustomersResponse(displayCustomers));
  113. }
  114.  
  115. _logger.LogError("Error: Cannot get customers");
  116. return OperationResult<GetCustomersResponse>.Failure("Cannot get customers");
  117. }
  118.  
  119. public async Task<OperationResult<CustomerDisplayModel>> GetSpecificCustomerAsync(GetSpecificCustomerRequest request)
  120. {
  121. var isValid = request.Validate();
  122.  
  123. if (!isValid)
  124. {
  125. _logger.LogError("Error: Invalid request");
  126. return OperationResult<CustomerDisplayModel>.Failure("Invalid request");
  127. }
  128.  
  129. var operationResult = await _customerRepository.GetCustomerAsync(request.Id).ConfigureAwait(false);
  130.  
  131. if (operationResult.Status)
  132. {
  133. _logger.LogInformation("Customer retrieved successfully");
  134.  
  135. return OperationResult<CustomerDisplayModel>.Success(new CustomerDisplayModel(operationResult.Data.Name, operationResult.Data.Address));
  136. }
  137.  
  138. _logger.LogError("Error: Cannot get specific customer");
  139. return OperationResult<CustomerDisplayModel>.Failure("Cannot get specific customer");
  140. }
  141.  
  142. public async Task<OperationResult> DeleteCustomerAsync(DeleteCustomerRequest request)
  143. {
  144. var isValid = request.Validate();
  145.  
  146. if (!isValid)
  147. {
  148. _logger.LogError("Error: Invalid request");
  149.  
  150. return OperationResult.Failure("Invalid request");
  151. }
  152.  
  153. var operationResult = await _customerRepository.DeleteCustomerAsync(request.Id).ConfigureAwait(false);
  154.  
  155. if (operationResult.Status)
  156. {
  157. _logger.LogInformation("Customer deleted successfully");
  158.  
  159. return OperationResult.Success();
  160.  
  161. }
  162.  
  163. _logger.LogError("Error: Cannot delete customer");
  164.  
  165. return OperationResult.Failure("Cannot delete customer");
  166. }
  167. }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement