public async Task <IActionResult> GetAllTemplateConversionUnit(AppTemplateConversionUnitQueryFilter filters)
        {
            Metadata metadata = new Metadata
            {
                IsValid    = false,
                Message    = "",
                TotalCount = 0
            };


            try
            {
                var recipes = await _appTemplateConversionUnitService.GetAllTemplateByUnitsInput(filters);

                return(Ok(recipes));
            }
            catch (Exception e)
            {
                metadata.IsValid = false;
                metadata.Message = e.InnerException.Message;
                var responseError = new ApiResponse <AppDetailQuotesGetDto>(null)
                {
                    Meta = metadata
                };


                return(Ok(responseError));
            }
        }
        public async Task <ApiResponse <List <AppTemplateConversionUnitGetDto> > > GetTemplateByUnitsInput(AppTemplateConversionUnitQueryFilter filter)
        {
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            List <AppTemplateConversionUnitGetDto> resultDto = new List <AppTemplateConversionUnitGetDto>();
            ApiResponse <List <AppTemplateConversionUnitGetDto> > response = new ApiResponse <List <AppTemplateConversionUnitGetDto> >(resultDto);

            try
            {
                var detailConversion = await _unitOfWork.AppDetailQuotesConversionUnitRepository.GetByAppDetailQuotesId(filter.AppDetailQuotesId);

                if (detailConversion.Count == 0)
                {
                    var template = await _unitOfWork.AppTemplateConversionUnitRepository.GetTemplateByUnitsInput(filter.AppUnitIdSince, filter.AppUnitIdUntil);

                    if (template != null)
                    {
                        template = template.OrderBy(x => x.OrderCalculate).ToList();

                        resultDto = _mapper.Map <List <AppTemplateConversionUnitGetDto> >(template);

                        response.Meta = metadata;
                        response.Data = resultDto;
                    }
                    else
                    {
                        metadata.IsValid = false;
                        metadata.Message = "Estas Unidades no tienen conversion configurada";
                        response.Meta    = metadata;
                        response.Data    = resultDto;
                    }



                    return(response);
                }
                else
                {
                    var template = await _unitOfWork.AppDetailQuotesConversionUnitRepository.GetDetailQuotesConversionInputById(filter.AppDetailQuotesId);



                    if (template != null)
                    {
                        template  = template.OrderBy(x => x.OrderCalculate).ToList();
                        resultDto = _mapper.Map <List <AppTemplateConversionUnitGetDto> >(template);

                        response.Meta = metadata;
                        response.Data = resultDto;
                    }
                    else
                    {
                        metadata.IsValid = false;
                        metadata.Message = "Estas Unidades no tienen conversion configurada";
                        response.Meta    = metadata;
                        response.Data    = resultDto;
                    }
                    return(response);
                }
            }
            catch (Exception ex)
            {
                metadata.IsValid = false;
                metadata.Message = ex.InnerException.Message;
                response.Meta    = metadata;
                response.Data    = null;
                return(response);
            }
        }
        public async Task <ApiResponse <List <AppTemplateConversionUnitGenericGetDto> > > GetAllTemplateByUnitsInput(AppTemplateConversionUnitQueryFilter filter)
        {
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            List <AppTemplateConversionUnitGenericGetDto> resultDto = new List <AppTemplateConversionUnitGenericGetDto>();
            ApiResponse <List <AppTemplateConversionUnitGenericGetDto> > response = new ApiResponse <List <AppTemplateConversionUnitGenericGetDto> >(resultDto);

            try
            {
                var template = await _unitOfWork.AppTemplateConversionUnitRepository.GetAllTemplateByUnitsInput(filter.AppUnitIdSince, filter.AppUnitIdUntil);

                template  = template.OrderBy(x => x.OrderCalculate).ToList();
                resultDto = _mapper.Map <List <AppTemplateConversionUnitGenericGetDto> >(template);



                foreach (var item in resultDto)
                {
                    AppUnits AppUnitsFind = await _appUnitsService.GetById(item.AppUnitIdSince);

                    if (AppUnitsFind != null)
                    {
                        AppUnitsGetDto appUnitsGetDto = _mapper.Map <AppUnitsGetDto>(AppUnitsFind);
                        item.AppUnitIdSinceGetDto = appUnitsGetDto;
                    }
                    AppUnitsFind = await _appUnitsService.GetById(item.AppUnitIdUntil);

                    if (AppUnitsFind != null)
                    {
                        AppUnitsGetDto appUnitsGetDto = _mapper.Map <AppUnitsGetDto>(AppUnitsFind);
                        item.AppUnitIdUntilGetDto = appUnitsGetDto;
                    }


                    AppVariables AppVariablesFind = await _appVariablesService.GetById(item.AppVariableId);

                    if (AppVariablesFind != null)
                    {
                        AppVariablesGetDto appVariablesGetDto = _mapper.Map <AppVariablesGetDto>(AppVariablesFind);
                        item.AppVariablesGetDto = appVariablesGetDto;
                    }
                }



                response.Meta = metadata;
                response.Data = resultDto;
                return(response);
            }
            catch (Exception ex)
            {
                metadata.IsValid = false;
                metadata.Message = ex.InnerException.Message;
                response.Meta    = metadata;
                response.Data    = null;
                return(response);
            }
        }