public async Task <IMerchantsSupervisorMembership> AddAsync(IMerchantsSupervisorMembership src) { MerchantGroupResponse merchantGroup = await _payMerchantClient.Groups.AddGroupAsync(Mapper.Map <AddMerchantGroupRequest>(src)); try { ISupervisorMembership membership = await _supervisorMembershipRepository.AddAsync( new SupervisorMembership { MerchantId = src.MerchantId, EmployeeId = src.EmployeeId, MerchantGroups = new[] { merchantGroup.Id } }); return(new MerchantsSupervisorMembership { MerchantId = membership.MerchantId, EmployeeId = membership.EmployeeId, Merchants = merchantGroup.Merchants }); } catch (DuplicateKeyException ex) { _log.ErrorWithDetails(ex, src); if (merchantGroup != null) { await _payMerchantClient.Groups.DeleteGroupAsync(merchantGroup.Id); } throw new SupervisorMembershipAlreadyExistsException(src.EmployeeId); } }
public async Task <IActionResult> AddForMerchants([FromBody] AddSupervisorMembershipMerchantsModel request) { try { IMerchantsSupervisorMembership membership = await _supervisorMembershipService.AddAsync(Mapper.Map <MerchantsSupervisorMembership>(request)); return(Ok(Mapper.Map <MerchantsSupervisorMembershipResponse>(membership))); } catch (SupervisorMembershipAlreadyExistsException e) { _log.ErrorWithDetails(e, new { e.EmployeeId }); return(BadRequest(ErrorResponse.Create(e.Message))); } }
public async Task <IActionResult> GetWithMerchants(string employeeId) { try { IMerchantsSupervisorMembership membership = await _supervisorMembershipService.GetWithMerchantsAsync(Uri.UnescapeDataString(employeeId)); return(Ok(Mapper.Map <MerchantsSupervisorMembershipResponse>(membership))); } catch (InvalidRowKeyValueException e) { _log.ErrorWithDetails(e, new { e.Variable, e.Value }); return(NotFound(ErrorResponse.Create("Employee not found"))); } }