private OpportunityFilter ConvertFilterOpportunity(Company_OpportunityFilterDTO Company_OpportunityFilterDTO)
        {
            OpportunityFilter OpportunityFilter = new OpportunityFilter();

            OpportunityFilter.Selects   = OpportunitySelect.ALL;
            OpportunityFilter.Skip      = Company_OpportunityFilterDTO.Skip;
            OpportunityFilter.Take      = Company_OpportunityFilterDTO.Take;
            OpportunityFilter.OrderBy   = Company_OpportunityFilterDTO.OrderBy;
            OpportunityFilter.OrderType = Company_OpportunityFilterDTO.OrderType;

            OpportunityFilter.Id                      = Company_OpportunityFilterDTO.Id;
            OpportunityFilter.Name                    = Company_OpportunityFilterDTO.Name;
            OpportunityFilter.CompanyId               = Company_OpportunityFilterDTO.CompanyId;
            OpportunityFilter.CustomerLeadId          = Company_OpportunityFilterDTO.CustomerLeadId;
            OpportunityFilter.ClosingDate             = Company_OpportunityFilterDTO.ClosingDate;
            OpportunityFilter.SaleStageId             = Company_OpportunityFilterDTO.SaleStageId;
            OpportunityFilter.ProbabilityId           = Company_OpportunityFilterDTO.ProbabilityId;
            OpportunityFilter.PotentialResultId       = Company_OpportunityFilterDTO.PotentialResultId;
            OpportunityFilter.LeadSourceId            = Company_OpportunityFilterDTO.LeadSourceId;
            OpportunityFilter.AppUserId               = Company_OpportunityFilterDTO.AppUserId;
            OpportunityFilter.CurrencyId              = Company_OpportunityFilterDTO.CurrencyId;
            OpportunityFilter.Amount                  = Company_OpportunityFilterDTO.Amount;
            OpportunityFilter.ForecastAmount          = Company_OpportunityFilterDTO.ForecastAmount;
            OpportunityFilter.Description             = Company_OpportunityFilterDTO.Description;
            OpportunityFilter.OpportunityResultTypeId = Company_OpportunityFilterDTO.OpportunityResultTypeId;
            OpportunityFilter.CreatorId               = Company_OpportunityFilterDTO.CreatorId;
            OpportunityFilter.CreatedAt               = Company_OpportunityFilterDTO.CreatedAt;
            OpportunityFilter.UpdatedAt               = Company_OpportunityFilterDTO.UpdatedAt;
            return(OpportunityFilter);
        }
        public async Task <ActionResult <int> > CountOpportunity([FromBody] Company_OpportunityFilterDTO Company_OpportunityFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            OpportunityFilter OpportunityFilter = ConvertFilterOpportunity(Company_OpportunityFilterDTO);

            OpportunityFilter = await OpportunityService.ToFilter(OpportunityFilter);

            int count = await OpportunityService.Count(OpportunityFilter);

            return(count);
        }
        public async Task <ActionResult <List <Company_OpportunityDTO> > > ListOpportunity([FromBody] Company_OpportunityFilterDTO Company_OpportunityFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            OpportunityFilter OpportunityFilter = ConvertFilterOpportunity(Company_OpportunityFilterDTO);

            OpportunityFilter = await OpportunityService.ToFilter(OpportunityFilter);

            List <Opportunity> Opportunities = await OpportunityService.List(OpportunityFilter);

            List <Company_OpportunityDTO> Company_OpportunityDTOs = Opportunities
                                                                    .Select(c => new Company_OpportunityDTO(c)).ToList();

            return(Company_OpportunityDTOs);
        }