public async Task <ActionResult <long> > CountOpportunityEmail([FromBody] Opportunity_OpportunityEmailFilterDTO Opportunity_OpportunityEmailFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }
            OpportunityEmailFilter OpportunityEmailFilter = new OpportunityEmailFilter();

            OpportunityEmailFilter.Id            = Opportunity_OpportunityEmailFilterDTO.Id;
            OpportunityEmailFilter.Title         = Opportunity_OpportunityEmailFilterDTO.Title;
            OpportunityEmailFilter.Content       = Opportunity_OpportunityEmailFilterDTO.Content;
            OpportunityEmailFilter.CreatorId     = Opportunity_OpportunityEmailFilterDTO.CreatorId;
            OpportunityEmailFilter.CreatedAt     = Opportunity_OpportunityEmailFilterDTO.CreatedAt;
            OpportunityEmailFilter.OpportunityId = Opportunity_OpportunityEmailFilterDTO.OpportunityId;
            OpportunityEmailFilter.EmailStatusId = Opportunity_OpportunityEmailFilterDTO.EmailStatusId;
            OpportunityEmailFilter.Reciepient    = Opportunity_OpportunityEmailFilterDTO.Reciepient;

            return(await OpportunityEmailService.Count(OpportunityEmailFilter));
        }
        public async Task <ActionResult <List <Opportunity_OpportunityEmailDTO> > > ListOpportunityEmail([FromBody] Opportunity_OpportunityEmailFilterDTO Opportunity_OpportunityEmailFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }
            OpportunityEmailFilter OpportunityEmailFilter = new OpportunityEmailFilter();

            OpportunityEmailFilter.Skip          = Opportunity_OpportunityEmailFilterDTO.Skip;
            OpportunityEmailFilter.Take          = Opportunity_OpportunityEmailFilterDTO.Take;
            OpportunityEmailFilter.OrderBy       = OpportunityEmailOrder.Id;
            OpportunityEmailFilter.OrderType     = OrderType.ASC;
            OpportunityEmailFilter.Selects       = OpportunityEmailSelect.ALL;
            OpportunityEmailFilter.Id            = Opportunity_OpportunityEmailFilterDTO.Id;
            OpportunityEmailFilter.Title         = Opportunity_OpportunityEmailFilterDTO.Title;
            OpportunityEmailFilter.Content       = Opportunity_OpportunityEmailFilterDTO.Content;
            OpportunityEmailFilter.CreatorId     = Opportunity_OpportunityEmailFilterDTO.CreatorId;
            OpportunityEmailFilter.CreatedAt     = Opportunity_OpportunityEmailFilterDTO.CreatedAt;
            OpportunityEmailFilter.OpportunityId = Opportunity_OpportunityEmailFilterDTO.OpportunityId;
            OpportunityEmailFilter.EmailStatusId = Opportunity_OpportunityEmailFilterDTO.EmailStatusId;
            OpportunityEmailFilter.Reciepient    = Opportunity_OpportunityEmailFilterDTO.Reciepient;

            List <OpportunityEmail> OpportunityEmails = await OpportunityEmailService.List(OpportunityEmailFilter);

            List <Opportunity_OpportunityEmailDTO> Opportunity_OpportunityEmailDTOs = OpportunityEmails
                                                                                      .Select(x => new Opportunity_OpportunityEmailDTO(x)).ToList();

            return(Opportunity_OpportunityEmailDTOs);
        }
        public async Task <ActionResult <List <Opportunity_ContactDTO> > > SingleListEmail([FromBody] Opportunity_OpportunityEmailFilterDTO Opportunity_OpportunityEmailFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            if (Opportunity_OpportunityEmailFilterDTO.OpportunityId == null || Opportunity_OpportunityEmailFilterDTO.OpportunityId.Equal.HasValue == false)
            {
                return(new List <Opportunity_ContactDTO>());
            }
            Opportunity Opportunity = await OpportunityService.Get(Opportunity_OpportunityEmailFilterDTO.OpportunityId.Equal.Value);

            if (Opportunity == null)
            {
                return(new List <Opportunity_ContactDTO>());
            }

            List <string> Emails = new List <string>();

            Emails.Add(Opportunity.Company?.Email);
            Emails.AddRange(Opportunity.OpportunityContactMappings?.Select(x => x.Contact?.Email).ToList());
            Emails = Emails.Where(x => x != null).ToList();
            if (Opportunity_OpportunityEmailFilterDTO.Email.HasValue && !string.IsNullOrWhiteSpace(Opportunity_OpportunityEmailFilterDTO.Email.StartWith))
            {
                Emails = Emails.Where(x => x.StartsWith(Opportunity_OpportunityEmailFilterDTO.Email.StartWith)).ToList();
            }
            List <Opportunity_ContactDTO> Results = Emails.Select(x => new Opportunity_ContactDTO {
                Email = x
            }).ToList();

            return(Results);
        }