예제 #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
        /// <summary>
        /// Retorna el listado de clientes segun la llamada indicada
        /// </summary>
        /// <param name="id">Id de la llamada.</param>
        /// <returns>
        /// Modelo <see cref="GetCustomersByCallResponseModel"/> con los datos de la respuesta.
        /// </returns>
        public GetCustomersByCallResponseModel GetCustomersByCallId(int id)

        {
            var responseModel = new GetCustomersByCallResponseModel

            {
                Status = ResultStatus.SUCCESS
            };

            try
            {
                var context = _callsCustomersRepository.GetContext();
                using (var dbTransaction = context.Database.BeginTransaction())
                {
                    var tableCustomer = _callsCustomersRepository.GetTable();
                    List <CallsCustomers> callCustomersDB = tableCustomer.Include(c => c.CustomerPhone).Where(c => c.CallId == id).OrderBy(c => c.CustomerName).ToList();

                    if (callCustomersDB == null || callCustomersDB.Count == 0)
                    {
                        responseModel.Status  = ResultStatus.NOT_FOUND;
                        responseModel.Message = "No data for this call.";
                        return(responseModel);
                    }
                    responseModel.Customers = callCustomersDB.ConvertAll(cp =>
                                                                         new CallsCustomersModel
                    {
                        CallId          = cp.CallId,
                        CustomerId      = cp.CustomerId,
                        CustomerName    = cp.CustomerName,
                        CustomerType    = Utilities.GetCustomerType(cp.CustomerType),
                        PhoneNumberList = new List <CustomersPhonesModel>(cp.CustomerPhone.ConvertAll(cpm =>
                                                                                                      new CustomersPhonesModel()
                        {
                            Id          = cpm.Id,
                            CustomerId  = cpm.CustomerId,
                            PhoneNumber = cpm.PhoneNumber,
                            PhoneType   = cpm.PhoneType,
                        })),
                    });
                }
            }
            catch (Exception e)
            {
                responseModel.Status  = ResultStatus.ERROR;
                responseModel.Message = e.Message;
            }
            return(responseModel);
        }