///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        private int AddSourceKeywordIfNotExist(string keyword, int?sourceId, int Client_Id, out int?Source_Id)
        {
            IQueryable <SourceKeyword> sourcekeyword = null;

            if (sourceId == null)                                      //случай для organic
            {
                sourcekeyword = from sk in _sourcekeywordsRep.GetAll() //_sourcekeywordsRep.FindBy(t=>t.ClientId==Client_Id && t.Keyword==keyword && t.)
                                where sk.Keyword == keyword &&
                                sk.ClientId == Client_Id &&
                                (sk.Source.SourceTypeId == Constants.SeoSourceId || sk.Source.SourceTypeId == null)
                                select sk;
            }
            else//случай для cpc
            {
                sourcekeyword = _sourcekeywordsRep.FindBy(t => t.Keyword == keyword && (sourceId == null ? t.SourceId == null : t.SourceId == sourceId) /*&& (sourcetype == null ? t.SourceTypeId == null : t.SourceTypeId == sourcetype)*/ && t.ClientId == Client_Id);
            }

            if (sourcekeyword.Count() == 0)
            {
                SourceKeyword new_sourcekeyword = new SourceKeyword()
                {
                    Keyword = keyword, ClientId = Client_Id, SourceId = sourceId
                };
                _sourcekeywordsRep.Add(new_sourcekeyword);
                _sourcekeywordsRep.Save();
                Source_Id = null;
                return(new_sourcekeyword.id);
            }
            Source_Id = sourcekeyword.First().SourceId;
            return(sourcekeyword.First().id);
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private int AddSourceKeywordIfNotExist(string keyword, int? sourceId, int Client_Id, out int? Source_Id)
        {
            IQueryable<SourceKeyword> sourcekeyword = null;
            if (sourceId == null)//случай для organic
                sourcekeyword = from sk in _sourcekeywordsRep.GetAll()//_sourcekeywordsRep.FindBy(t=>t.ClientId==Client_Id && t.Keyword==keyword && t.)
                                where sk.Keyword == keyword
                                      && sk.ClientId == Client_Id
                                      && (sk.Source.SourceTypeId==Constants.SeoSourceId || sk.Source.SourceTypeId==null)
                                select sk;
            else//случай для cpc
                sourcekeyword = _sourcekeywordsRep.FindBy(t => t.Keyword == keyword && (sourceId == null ? t.SourceId == null : t.SourceId == sourceId) /*&& (sourcetype == null ? t.SourceTypeId == null : t.SourceTypeId == sourcetype)*/ && t.ClientId == Client_Id);

            if (sourcekeyword.Count() == 0)
            {
                SourceKeyword new_sourcekeyword = new SourceKeyword() { Keyword = keyword, ClientId = Client_Id, SourceId = sourceId };
                _sourcekeywordsRep.Add(new_sourcekeyword);
                _sourcekeywordsRep.Save();
                Source_Id = null;
                return new_sourcekeyword.id;
            }
            Source_Id = sourcekeyword.First().SourceId;
            return sourcekeyword.First().id;
        }