Пример #1
0
        public IActionResult GetClientsBySession([FromRoute][Required] string id)
        {
            StatusResponseDto errorStatus;

            try
            {
                /// <summary>
                /// Método para guardar request en logs
                /// </summary>
                _securityService.RequestLog("api/customers/GetClientsBySession: " + id);

                GetCustomersByCallResponseModel   businessResult = new GetCustomersByCallResponseModel();
                GetCallIdBySessionIdResponseModel callModel      = _callService.GetCallIdBySessionId(id);
                if (callModel != null && callModel.Status == ResultStatus.SUCCESS)
                {
                    businessResult = _customerService.GetCustomersByCallId(callModel.CallId);
                }
                else
                {
                    businessResult.Status  = ResultStatus.NOT_FOUND;
                    businessResult.Message = callModel.Message;
                }

                switch (businessResult.Status)
                {
                case ResultStatus.SUCCESS:
                    List <CustomerDto> response = _mapper.Map <List <CustomerDto> >(businessResult.Customers);
                    return(Ok(response));

                case ResultStatus.ACCESS_DENIED:
                    return(StatusCode(StatusCodes.Status401Unauthorized));

                case ResultStatus.NOT_AUTHORIZED:
                    return(StatusCode(StatusCodes.Status403Forbidden));

                case ResultStatus.NOT_FOUND:
                    errorStatus = _mapper.Map <StatusResponseDto>(businessResult);
                    return(StatusCode(StatusCodes.Status404NotFound, errorStatus));

                default:
                    errorStatus = _mapper.Map <StatusResponseDto>(businessResult);
                    return(StatusCode(StatusCodes.Status500InternalServerError, errorStatus));
                }
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, e));
            }
        }
Пример #2
0
        public IActionResult RecordCall([FromBody][Required] PatchRecordCallRequestDto dataDtoIn)
        {
            try
            {
                /// <summary>
                /// Método para guardar request en logs
                /// </summary>

                if (dataDtoIn == null || dataDtoIn.SessionId == "")
                {
                    return(BadRequest());
                }

                StatusResponseModel businessResponse;

                //Verificamos que el comercial tenga una llamada con ese sessionID
                GetCallIdBySessionIdResponseModel callModel = _boCallsService.GetCallIdBySessionId(dataDtoIn.SessionId, dataDtoIn.Record, true);

                _securityService.RequestLog("api/bo/calls/RecordCall: " + JsonConvert.SerializeObject(dataDtoIn) + " || response: " + JsonConvert.SerializeObject(callModel));

                switch (callModel.Status)
                {
                case ResultStatus.SUCCESS:
                    businessResponse = _boCallsService.RecordCall(callModel.OrigChannel, dataDtoIn.Record);
                    break;

                case ResultStatus.NOT_FOUND:
                    businessResponse = new StatusResponseModel
                    {
                        Message = callModel.Message,
                        Status  = ResultStatus.NOT_FOUND
                    };
                    break;

                default:
                    businessResponse = new StatusResponseModel
                    {
                        Message = callModel.Message,
                        Status  = ResultStatus.ERROR
                    };
                    break;
                }

                StatusResponseDto responseDto;
                switch (businessResponse.Status)
                {
                case ResultStatus.SUCCESS:
                    responseDto = _mapper.Map <StatusResponseDto>(businessResponse);
                    return(StatusCode(StatusCodes.Status200OK, responseDto));

                case ResultStatus.BAD_REQUEST:
                    return(StatusCode(StatusCodes.Status400BadRequest));

                case ResultStatus.ACCESS_DENIED:
                    return(StatusCode(StatusCodes.Status401Unauthorized));

                case ResultStatus.NOT_AUTHORIZED:
                    return(StatusCode(StatusCodes.Status403Forbidden));

                case ResultStatus.NOT_FOUND:
                    responseDto = _mapper.Map <StatusResponseDto>(businessResponse);
                    return(StatusCode(StatusCodes.Status404NotFound, responseDto));

                case ResultStatus.CANNOT_CONNECT_TO_PBX:
                case ResultStatus.EXTERNAL_SERVICE_ERROR:
                    responseDto = _mapper.Map <StatusResponseDto>(businessResponse);
                    return(StatusCode(StatusCodes.Status503ServiceUnavailable, responseDto));

                default:
                    responseDto = _mapper.Map <StatusResponseDto>(businessResponse);
                    return(StatusCode(StatusCodes.Status500InternalServerError, responseDto));
                }
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, e));
            }
        }