Example #1
0
        public void RequestParamsAreCompleteAndOK()
        {
            var repositories = CreateMocks();
            ///zmienna przechowująca poprzednio pobrany obiekt
            AdFile previousMultimediaObject = null;
            ///zmienna przechowująca poprzednio wygenerowaną statystykę
            StatisticsEntry previousStatisticsEntry = null;
            ///request dla metody wyszukującej obiekt multimedialny
            var request   = CreateRequest();
            var itemCount = 4;

            for (var i = 0; i < itemCount; i++)
            {
                CheckMethods(repositories, ref previousMultimediaObject, ref previousStatisticsEntry, request);
            }
        }
Example #2
0
        public void RequestParamIsIncomplete()
        {
            ///przypadek, kiedy w obiekcie requesta są wypełnione tylko niezbędne pola
            var request = new ADEngineMultimediaSelectionAlgorythm.MultimediaObjectSelection.MultimediaObjectsSelectionParams();
            //request.CategoryCodes = new string[] { "MED", "MTR" };
            //request.Width = 250;
            //request.Height = 250;
            //request.SessionId = Guid.NewGuid().ToString();

            var repositories = CreateMocks();
            ///zmienna przechowująca poprzednio pobrany obiekt
            AdFile previousMultimediaObject = null;
            ///zmienna przechowująca poprzednio wygenerowaną statystykę
            StatisticsEntry previousStatisticsEntry = null;
            var             mos = new ADEngineMultimediaSelectionAlgorythm.MultimediaObjectSelection(repositories);

            var itemCount = 4;

            for (var i = 0; i < itemCount; i++)
            {
                CheckMethods(repositories, ref previousMultimediaObject, ref previousStatisticsEntry, request);
            }
        }
        /// <summary>
        /// Zapisuje w statystykach informacje o requeście klienta i o wysłanym do niego w odpowiedzi obiekcie multimedialnym.
        /// </summary>
        /// <param name="selectionParams">Parametry opisujące request, na podstawie których został wybrany odpowiedni obiekt multimedialny</param>
        /// <param name="multimediaObject">Wybrany obiekt multimedialny (który zostanie zwrócony klientowi jako odpowiedź na jego request)</param>
        /// <param name="statisticsEntry">Wpis statystyk</param>
        public void SaveStatisticsEntry(MultimediaObjectsSelectionParams selectionParams, AdFile multimediaObject, StatisticsEntry statisticsEntry)
        {
            if (selectionParams == null || multimediaObject == null)
            {
                return;
            }

            if (statisticsEntry == null)
            {
                throw new Exception("Nie udało się zapisać do statystyk informacji o requeście, ponieważ nie powiodło się generowanie takiego obiektu.");
            }

            try
            {
                var host      = _repositories.UserRepository.Users.First(it => it.Devices.Any(dev => dev.Id == selectionParams.ID));
                var cmpid     = multimediaObject.CmpId;
                var campUp    = _repositories.CampaignRepository.Campaigns.First(it => it.Id == cmpid);
                var cmpUserId = campUp.UserId;
                var user      = _repositories.UserRepository.Users.First(it => it.Id == cmpUserId);
                if (user.Role.RoleType != "Admin")
                {
                    campUp.AdPoints -= statisticsEntry.Statistics.Clicked ? campUp.ClickValue : campUp.ViewValue;
                    _repositories.CampaignRepository.SaveCampaign(campUp, true);
                }
                host.AdPoints += (statisticsEntry.Statistics.Clicked ? campUp.ClickValue : campUp.ViewValue) * host.Role.Commission * (decimal)0.01;
                _repositories.UserRepository.Save(host);
            }
            catch (Exception)
            {
                throw new Exception("Nie udało się wykonć zmian AdPoints'ów");
            }


            var response = _repositories.StatisticsRepository.Save(statisticsEntry);

            if (response.Accepted)
            {
                return;
            }

            var fullMessage = new List <string>();

            if (response.Errors != null && response.Errors.Count > 0)
            {
                fullMessage.AddRange(response.Errors.Select(e => e.Message));
            }

            var thrownError = "Nie udało się zapisać do statystyk informacji o requeście. Nie można przesłać obiektu multimedialnego.";

            if (fullMessage.Count <= 0)
            {
                throw new Exception(thrownError);
            }
            thrownError += (Environment.NewLine + Environment.NewLine) + string.Join(Environment.NewLine, fullMessage);

            fullMessage.Clear();

            throw new Exception(thrownError);
        }
Example #4
0
        private void CheckMethods(RepositorySet repositories,
                                  ref AdFile previousMultimediaObject,
                                  ref StatisticsEntry previousStatisticsEntry,
                                  ADEngineMultimediaSelectionAlgorythm.MultimediaObjectSelection.MultimediaObjectsSelectionParams request)
        {
            var           now = DateTime.Now;
            var           mos = new ADEngineMultimediaSelectionAlgorythm.MultimediaObjectSelection(repositories);
            List <string> validationErrors = null;
            ///wyszukanie i pobranie obiektu do wyświetlenia
            var mo1 = mos.FindMultimediaObject(request, FILESTREAM_OPTION, out validationErrors);

            ///pobranie wygenerowanej statystyki
            var se1 = mos.CreateStatisticsEntry(request, mo1);

            ///zapis statystyki do "bazy"
            //MockData.Statistics.Add(se1.Statistics);
            repositories = CreateMocks();

            if (fetchedFiles == null)
            {
                fetchedFiles = new List <AdFile>();
            }
            ///zapamietujemy otrzymany obiekt
            fetchedFiles.Add(mo1);

            ///czy obiekt nie jest nullem
            Assert.IsNotNull(mo1);
            Assert.IsNotNull(se1);

            if (mo1 != null && se1 != null)
            {
                ///czy zgadza się rozmiar
                //Assert.AreEqual(request.Width, mo1.Width);
                //Assert.AreEqual(request.Height, mo1.Height);
                ///czy zgadza się nośnik
                //Assert.AreEqual(request.Referrer, se1.Statistics.Referrer);
                ///czy kampanie i kategorie nie są nullem
                Assert.IsNotNull(se1.SelectedMultimediaObjectCampaigns);
                Assert.IsNotNull(se1.Categories);
                ///czy obiekt jest różny od poprzednio pobranego obiektu
                if (previousMultimediaObject != null)
                {
                    Assert.AreNotEqual(mo1.ID, previousMultimediaObject.ID);
                }

                if (se1.SelectedMultimediaObjectCampaigns != null)
                {
                    foreach (var c in se1.SelectedMultimediaObjectCampaigns)
                    {
                        Assert.IsTrue(c.IsActiveCampaign);
                        Assert.IsTrue(c.CampaignStartDate <= now);
                        Assert.IsTrue(c.CampaignEndDate >= now);
                    }
                }

                if (se1.Categories != null)
                {
                    //if (request.CategoryCodes.Length <= se1.Categories.Count)
                    //{
                    //	for (var i = 0; i < request.CategoryCodes.Length; i++)
                    //	{
                    //		Assert.IsTrue(se1.Categories.ContainsKey(request.CategoryCodes[i]));
                    //	}
                    //}
                    //else
                    //{
                    //	foreach (var c in se1.Categories)
                    //	{
                    //		Assert.IsTrue(request.CategoryCodes.ToList().Contains(c.Key));
                    //	}
                    //}
                }

                if (firstObject == null)
                {
                    firstObject = mo1;
                }
                else
                {
                    var previousStatus = previousStatisticsEntry.SelectedMultimediaObjectCampaigns.Max(x => x.PriorityCode);
                    var currentStatus  = se1.SelectedMultimediaObjectCampaigns.Max(x => x.PriorityCode);
                    if (mo1.ID != firstObject.ID)
                    {
                        Assert.IsTrue(previousStatus >= currentStatus);
                    }
                }

                previousMultimediaObject = mo1;
                previousStatisticsEntry  = se1;
            }
        }
        /// <summary>
        /// Tworzy zestaw informacji niezbędnych do odnotowania w statystykach informacji o requeście klienta i o wysłanym do niego w odpowiedzi obiekcie multimedialnym.
        /// </summary>
        /// <param name="selectionParams">Parametry opisujące request, na podstawie których został wybrany odpowiedni obiekt multimedialny</param>
        /// <param name="multimediaObject">Wybrany obiekt multimedialny (który zostanie zwrócony klientowi jako odpowiedź na jego request)</param>
        /// <param name="clicked">Stat wpisu - przekierowanie / wyswietlenie</param>
        public StatisticsEntry CreateStatisticsEntry(MultimediaObjectsSelectionParams selectionParams, AdFile multimediaObject, bool clicked = false)
        {
            if (selectionParams == null || multimediaObject == null)
            {
                return(null);
            }

            var result     = new StatisticsEntry();
            var userId     = _repositories.DeviceRepository.Devices.Single(it => it.Id == selectionParams.ID).UserId;
            var statistics = new Statistic
            {
                DeviceId           = selectionParams.ID,
                UserId             = userId,
                RequestDate        = selectionParams.RequestDate,
                ResponseDate       = DateTime.Now,
                SessionId          = selectionParams.SessionId,
                Data1              = selectionParams.Data0,
                Data2              = selectionParams.Data1,
                Data3              = selectionParams.Data2,
                Data4              = selectionParams.Data3,
                MultimediaObjectId = multimediaObject.ID,
                RequestSource      = selectionParams.RequestSource,
                CampaignId         = multimediaObject.CmpId,
                RequestIP          = selectionParams.RequestIP
            };

            result.Statistics = statistics;

            var now = DateTime.Now;
            // szukamy kampanii, do których należy obiekt multimedialny
            var mmObject = _repositories.MultimediaObjectRepository.MultimediaObjects.Single(it => it.Id == multimediaObject.ID);

            var cmps = mmObject.Campaigns.Select(it => new SelectedMultimediaObjectCampaign
            {
                CampaignId        = it.Id,
                IsActiveCampaign  = it.IsActive,
                PriorityCode      = it.Priority.Code,
                CampaignStartDate = it.StartDate,
                CampaignEndDate   = it.EndDate
            });

            var campaignsId = cmps.Select(it => it.CampaignId);

            // bierzemy tylko te kategorie, do których należą wybrane kampanie
            var categories = mmObject.Campaigns
                             .SelectMany(it => it.Categories)
                             .Distinct();

            result.Categories = categories.Select(it => new { it.Code, it.Id }).ToDictionary(it => it.Code, it => it.Id);

            var cmp = mmObject.Campaigns.FirstOrDefault();

            if (cmp != null)
            {
                result.Statistics.AdPoints = clicked ? cmp.ClickValue : cmp.ViewValue;
            }
            result.Statistics.Clicked = clicked;
            return(result);
        }
        /// <summary>
        /// Wyszukuje obiekt multimedialny, który zostanie wysłany do klienta w odpowiedzi na jego request
        /// </summary>
        /// <param name="selectionParams">Parametry obiektu</param>
        /// <param name="filestream">Określa czy pliki mają być pobierane z FILESTREAM</param>
        /// <param name="validationErrors">lista błędów</param>
        /// <returns>Obiekt multimedialny do wyświetlenia w kliencie</returns>
        public AdFile FindMultimediaObject(MultimediaObjectsSelectionParams selectionParams, bool filestream, out List <string> validationErrors)
        {
            if (!RequestParamsAreValid(selectionParams, out validationErrors))
            {
                return(null);
            }

            AdFile resultFile = null;

            var requestFromNewSession =
                !_repositories.StatisticsRepository.Statistics.Any(s => s.SessionId == selectionParams.SessionId);                // == 0;

            // wyszukujemy obiekty, które zostały ostatnio pobrane przez ten sam nośnik w ramach jednej sesji
            IQueryable <int> previousObjectId = null;
            var alreadyFetchedObjects         =
                from s in _repositories.StatisticsRepository.Statistics
                join moc in _repositories.CampaignRepository.Campaigns.SelectMany(it => it.MultimediaObjects) on s.MultimediaObjectId equals moc.Id
                where s.DeviceId == selectionParams.ID
                orderby s.ResponseDate descending
                select new
            {
                sessionID          = s.SessionId,
                multimediaObjectID = s.MultimediaObjectId
            };

            if (!requestFromNewSession)
            {
                // pobieramy idyntyfikatory wszystkich obiektów multimedialnych pobranych w ramach tej samej sesji
                alreadyFetchedObjects = from s in alreadyFetchedObjects
                                        where s.sessionID == selectionParams.SessionId
                                        select s;

                previousObjectId = from s in alreadyFetchedObjects
                                   select s.multimediaObjectID;
            }

            var now = DateTime.Now.Date;
            // wyszukujemy obiekty multimedialne spełniające kryteria określone w parametrach metody
            var dev = _repositories.DeviceRepository.Devices
                      .SingleOrDefault(it => it.Id == selectionParams.ID);

            //var dev = _repositories.DeviceRepository.Devices.FirstOrDefault(m => m.Id == selectionParams.ID);

            if (dev == null)
            {
                return(null);
            }

            var objPCmp = dev.Campaigns.Select(it => new MMCmp {
                cmp = it, muliMultimediaObjects = it.MultimediaObjects
            });

            ICollection <ExtMM> obj = new Collection <ExtMM>();

            foreach (var a in objPCmp.SelectMany(it => it.muliMultimediaObjects.Select(o => new ExtMM
            {
                Campaigns = o.Campaigns,
                cmp = it.cmp,
                Contents = o.Contents,
                FileName = o.FileName,
                Id = o.Id,
                Url = o.Url,
                Type = o.Type,
                Name = o.Name,
                Thumbnail = o.Thumbnail,
                Statistics = o.Statistics,
                TypeId = o.TypeId,
                User = o.User,
                MimeType = o.MimeType,
                UserId = o.UserId
            }))
                     .Where(a => (dev.Categories.Count() != dev.Categories.Except(a.cmp.Categories).Count() || dev.Categories.Count == 0) &&
                            a.cmp.IsActive && a.cmp.StartDate <= now && a.cmp.EndDate >= now && a.cmp.AdPoints > 0 &&
                            a.TypeId == dev.TypeId))

            {
                obj.Add(a);
            }

            if (!obj.Any())
            {
                foreach (var a in _repositories.CampaignRepository.Campaigns.SelectMany(it => it.MultimediaObjects.Select(o => new ExtMM
                {
                    Campaigns = o.Campaigns,
                    cmp = it,
                    Contents = o.Contents,
                    FileName = o.FileName,
                    Id = o.Id,
                    Url = o.Url,
                    Type = o.Type,
                    Name = o.Name,
                    Thumbnail = o.Thumbnail,
                    Statistics = o.Statistics,
                    TypeId = o.TypeId,
                    User = o.User,
                    MimeType = o.MimeType,
                    UserId = o.UserId
                })).Where(a => (dev.Categories.Count() != dev.Categories.Except(a.cmp.Categories).Count() || dev.Categories.Count == 0) && dev.TypeId == a.TypeId))
                {
                    obj.Add(a);
                }
            }

            var availableObjects = (
                from m in obj
                select new
            {
                multimediObject = m,
                priorityCode = m.cmp.Priority.Code,
                width = m.Type.Width,
                height = m.Type.Height,
                cmpId = m.cmp.Id
            });

            var availableObjectsId = (from mo in availableObjects
                                      select mo.multimediObject.Id).Distinct();

            if (requestFromNewSession)
            {
                availableObjects = (from s in availableObjects
                                    select s).Distinct().OrderByDescending(x => x.priorityCode);
            }
            else
            {
                if (NotFetchedObjectsExist(previousObjectId, availableObjectsId))
                {
                    // jeszcze nie wszystkie obiekty zostaly pobrane, wybieramy tego, ktory nie byl jeszcze pobrany
                    availableObjects = (from s in availableObjects
                                        where !previousObjectId.Contains(s.multimediObject.Id)
                                        select s).Distinct().OrderByDescending(x => x.priorityCode);
                }
                else if (previousObjectId.Any())
                {
                    // wszystkie mozliwe do pobrania obiekty zostały już pobrane, więc rozpoczynamy pobieranie od nowa

                    // sprawdzamy, który z dotychczas pobranych obiektów nie są już dostępne do ponownego pobrania
                    var excluded = ExcludedObjects(previousObjectId.ToList(), availableObjectsId.ToList());

                    // pogrupuj wszystkie pobrane dotychczas (i możliwe do ponownego pobrania) obiekty wg ilości pobrań
                    var previousIdFiltered = previousObjectId.ToList().Where(x => !excluded.Contains(x));
                    var groupedByCount     = previousIdFiltered.GroupBy(x => x)
                                             .Select(group => new
                    {
                        Id    = group.Key,
                        Count = group.Count()
                    })
                                             .OrderBy(x => x.Count);

                    // bierzemy ten, który był pobrany najwięcej razy
                    var max = groupedByCount.LastOrDefault().Count;
                    // bierzyemy te, które były pobrane mniej razy
                    var a = groupedByCount.Where(x => x.Count < max);
                    if (!a.Any() || (a.Count() == 1 && a.FirstOrDefault().Id == previousIdFiltered.FirstOrDefault()))
                    {
                        // jeśli wszystkie byly pobrane tyle samo razy, to znaczy, że rozpoczynamy nową
                        // rundę pobierania obiektów od początku
                        a = groupedByCount;
                    }

                    var previousObject = (from n in a
                                          join m in availableObjects on n.Id equals m.multimediObject.Id
                                          where n.Id == previousIdFiltered.FirstOrDefault()
                                          orderby n.Count
                                          orderby m.priorityCode descending
                                          orderby m.multimediObject.Id
                                          select m).Distinct();

                    // jesli w międzyczasie doszły nowe obiekty to najpierw je wyświetlamy, a kiedy ich ilość wyświetleń będzie
                    // taka sama jak dotychczas wyświetlanych obiektów, to w sortujemy od najwyższego do najniższego priorytetu
                    availableObjects = (from n in a
                                        join m in availableObjects on n.Id equals m.multimediObject.Id
                                        where n.Id != previousIdFiltered.FirstOrDefault()
                                        orderby n.Count
                                        orderby m.priorityCode descending
                                        orderby m.multimediObject.Id
                                        select m).Distinct();

                    var fetchedCount = alreadyFetchedObjects.Count();
                    if (!availableObjects.Any() && fetchedCount > 0)
                    {
                        availableObjects = previousObject;
                    }
                }
            }

            if (availableObjects.Any())
            {
                var result = availableObjects.FirstOrDefault();

                if (result != null)
                {
                    resultFile = new AdFile
                    {
                        Name       = result.multimediObject.Name,
                        MimeType   = result.multimediObject.MimeType,
                        ID         = result.multimediObject.Id,
                        Width      = result.width,
                        Height     = result.height,
                        StatusCode = result.priorityCode,
                        URL        = result.multimediObject.Url,
                        CmpId      = result.multimediObject.cmp.Id
                    };
                }
            }

            return(resultFile);
        }
        /// <summary>
        /// Zapisuje w statystykach informacje o requeście klienta
        /// </summary>
        /// <param name="selectionParams">Parametry opisujące request, na podstawie których został wybrany odpowiedni obiekt multimedialny</param>
        /// <param name="multimediaObject">Wybrany obiekt multimedialny (który zostanie zwrócony klientowi jako odpowiedź na jego request)</param>
        /// <param name="cliecked">Przekierowanie</param>
        public void SaveStatisticsEntry(MultimediaObjectsSelectionParams selectionParams, AdFile multimediaObject, bool cliecked = false)
        {
            var s = CreateStatisticsEntry(selectionParams, multimediaObject, cliecked);

            SaveStatisticsEntry(selectionParams, multimediaObject, s);
        }
Example #8
0
        public ActionResult Index(string data0, string data1, string data2, string data3, int Id, string viewId)
        {
            var errors     = new List <string>();
            var nameCookie = "AdServer" + viewId;

            try
            {
                var selectionRequest = new MultimediaObjectSelection.MultimediaObjectsSelectionParams
                {
                    ID            = Id,
                    Data0         = data0,
                    Data1         = data1,
                    Data2         = data2,
                    Data3         = data3,
                    RequestDate   = DateTime.Now,
                    RequestSource = (int)Statistic.RequestSourceType.WWW
                };
                var ips = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                selectionRequest.RequestIP = !string.IsNullOrEmpty(ips) ? ips.Split(',')[0] : Request.ServerVariables["REMOTE_ADDR"];

                var sessionId = Request.Cookies.Get(nameCookie) == null?Guid.NewGuid().ToString() : Request.Cookies[nameCookie]["sessionId"];

                selectionRequest.SessionId = sessionId;

                var cookie = new HttpCookie(nameCookie);
                cookie.Values.Add("sessionId", sessionId);

                using (var ctx = new AdServContext())
                {
                    var repositories = EFRepositorySet.CreateRepositorySet(ctx);

                    try
                    {
                        var           mos = new MultimediaObjectSelection(repositories);
                        List <string> err = new List <string>();

                        const string key    = "FILESTREAM_OPTION";
                        var          urlKey = ConfigurationManager.AppSettings[key];

                        bool filestreamOption = false;
                        if (urlKey != null && !string.IsNullOrEmpty(urlKey))
                        {
                            bool.TryParse(urlKey, out filestreamOption);
                        }

                        bool add = true;
                        if (Request.UrlReferrer != null)
                        {
                            if (Request.Url.Host == Request.UrlReferrer.Host)
                            {
                                add = false;
                            }
                        }
                        AdFile response = mos.GetMultimediaObject(selectionRequest, filestreamOption, add, out err);
                        cookie.Values.Add("cmp", response.CmpId.ToString());

                        if (err != null && err.Count > 0)
                        {
                            errors.AddRange(err);
                        }
                        else
                        {
                            cookie.Values.Add("Id", response.ID.ToString());
                            cookie.Values.Add("StatusCode", response.StatusCode.ToString());
                            Response.AppendCookie(cookie);
                            return(File(response.Contents, response.MimeType));
                        }
                    }
                    catch (Exception ex)
                    {
                        var hierarchy = new List <Exception>();
                        ExceptionsHandlingHelper.HierarchizeError(ex, ref hierarchy);
                        if (hierarchy.Count > 0)
                        {
                            errors.AddRange(hierarchy.Select(s => s.Message + Environment.NewLine + s.StackTrace).Distinct().AsEnumerable());
                        }

                        SaveErrorInLogFile(selectionRequest, ex);
                    }
                }
            }
            catch (Exception ex)
            {
                var hierarchy = new List <Exception>();
                ExceptionsHandlingHelper.HierarchizeError(ex, ref hierarchy);
                if (hierarchy.Count > 0)
                {
                    errors.AddRange(hierarchy.Select(s => s.Message + Environment.NewLine + s.StackTrace).Distinct().AsEnumerable());
                }

                SaveErrorInLogFile(ex);
            }
            return(null);
        }
        public static List <AdFile> ModelAdFile(List <String> strList)
        {
            List <AdFile> listAdFile  = new List <AdFile>();
            Boolean       isFullModel = false;
            AdFile        adFile      = new AdFile();
            Int32         lastElem    = strList.Count;

            #region adFile
            for (int i = 0; i <= strList.Count; i++)
            {
                if (lastElem == 0)
                {
                    listAdFile.Add(adFile);
                    break;
                }
                if (isFullModel)
                {
                    listAdFile.Add(adFile);
                    adFile      = new AdFile();
                    isFullModel = false;
                }
                if (adFile.AdFileId == null)
                {
                    //if (i > strList.Count) continue;

                    String temp = strList[i];
                    if (String.IsNullOrEmpty(temp))
                    {
                        lastElem--;
                        continue;
                    }

                    adFile.AdFileId = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.AgencyId == null)
                {
                    adFile.AgencyId = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.TypeOfOwnership == null)
                {
                    adFile.TypeOfOwnership = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.PostalCode == null)
                {
                    adFile.PostalCode = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.City == null)
                {
                    adFile.City = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Title == null)
                {
                    adFile.Title = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Price == null)
                {
                    adFile.Price = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.LivingArea == null)
                {
                    adFile.LivingArea = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.NumberOfRooms == null)
                {
                    adFile.NumberOfRooms = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.NumberOfChamber == null)
                {
                    adFile.NumberOfChamber = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.ShortAdvertisement == null)
                {
                    adFile.ShortAdvertisement = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo1 == null)
                {
                    adFile.Photo1 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo2 == null)
                {
                    adFile.Photo2 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo3 == null)
                {
                    adFile.Photo3 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo4 == null)
                {
                    adFile.Photo4 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo5 == null)
                {
                    adFile.Photo5 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.TypeOfMandate == null)
                {
                    adFile.TypeOfMandate = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.GIEId == null)
                {
                    adFile.GIEId = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Square == null)
                {
                    adFile.Square = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.NumberOfMandate == null)
                {
                    adFile.NumberOfMandate = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.LandType == null)
                {
                    adFile.LandType = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.VirtualPartnersURL == null)
                {
                    adFile.VirtualPartnersURL = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.BuildType == null)
                {
                    adFile.BuildType = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.AmountOfCommissionTTC == null)
                {
                    adFile.AmountOfCommissionTTC = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.RentTTC == null)
                {
                    adFile.RentTTC = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.AdvertisingInEnglish == null)
                {
                    adFile.AdvertisingInEnglish = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.AdvertisingInFrench == null)
                {
                    adFile.AdvertisingInFrench = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.InsuranceDeposit == null)
                {
                    adFile.InsuranceDeposit = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Rent == null)
                {
                    adFile.Rent = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.AreaSurface == null)
                {
                    adFile.AreaSurface = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.AdvertisingPoster == null)
                {
                    adFile.AdvertisingPoster = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.GeneralAvailabilityOfHousing == null)
                {
                    adFile.GeneralAvailabilityOfHousing = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.NumberOfFloor == null)
                {
                    adFile.NumberOfFloor = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.TypeOfBuilding == null)
                {
                    adFile.TypeOfBuilding = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null1 == null)
                {
                    adFile.Null1 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null2 == null)
                {
                    adFile.Null2 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null3 == null)
                {
                    adFile.Null3 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null4 == null)
                {
                    adFile.Null4 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null5 == null)
                {
                    adFile.Null5 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo6 == null)
                {
                    adFile.Photo6 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo7 == null)
                {
                    adFile.Photo7 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo8 == null)
                {
                    adFile.Photo8 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo9 == null)
                {
                    adFile.Photo9 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo10 == null)
                {
                    adFile.Photo10 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo11 == null)
                {
                    adFile.Photo11 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo12 == null)
                {
                    adFile.Photo12 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo13 == null)
                {
                    adFile.Photo13 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo14 == null)
                {
                    adFile.Photo14 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo15 == null)
                {
                    adFile.Photo15 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo16 == null)
                {
                    adFile.Photo16 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo17 == null)
                {
                    adFile.Photo17 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo18 == null)
                {
                    adFile.Photo18 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo19 == null)
                {
                    adFile.Photo19 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Photo20 == null)
                {
                    adFile.Photo20 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.RentOfFurniture == null)
                {
                    adFile.RentOfFurniture = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.JointLease == null)
                {
                    adFile.JointLease = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.AnnualFee == null)
                {
                    adFile.AnnualFee = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.IndefiniteJointOwnership == null)
                {
                    adFile.IndefiniteJointOwnership = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null100 == null)
                {
                    adFile.Null100 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null101 == null)
                {
                    adFile.Null101 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null102 == null)
                {
                    adFile.Null102 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null103 == null)
                {
                    adFile.Null103 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null104 == null)
                {
                    adFile.Null104 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null105 == null)
                {
                    adFile.Null105 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null106 == null)
                {
                    adFile.Null106 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null107 == null)
                {
                    adFile.Null107 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null108 == null)
                {
                    adFile.Null108 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null109 == null)
                {
                    adFile.Null109 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null110 == null)
                {
                    adFile.Null110 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null111 == null)
                {
                    adFile.Null111 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null112 == null)
                {
                    adFile.Null112 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null113 == null)
                {
                    adFile.Null113 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null114 == null)
                {
                    adFile.Null114 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null115 == null)
                {
                    adFile.Null115 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null116 == null)
                {
                    adFile.Null116 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null117 == null)
                {
                    adFile.Null117 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null118 == null)
                {
                    adFile.Null118 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null119 == null)
                {
                    adFile.Null119 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null120 == null)
                {
                    adFile.Null120 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null121 == null)
                {
                    adFile.Null121 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null122 == null)
                {
                    adFile.Null122 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null123 == null)
                {
                    adFile.Null123 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null124 == null)
                {
                    adFile.Null124 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null125 == null)
                {
                    adFile.Null125 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null126 == null)
                {
                    adFile.Null126 = strList[i];
                    lastElem--;
                    continue;
                }
                if (adFile.Null127 == null)
                {
                    adFile.Null127 = strList[i];
                    isFullModel    = true;
                    lastElem--;
                    continue;
                }
            }
            #endregion
            return(listAdFile);
        }