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