public void ResolveNamingNeutralTest() { IUnitOfWork unit = new EFUnitOfWork(this.databaseSportsContext); SportType football = new SportType { Name = "Football" }; SportType sport = unit.GetRepository <SportType>() .Get(x => x.Name.ToUpper() == football.Name.ToUpper()) .FirstOrDefault(); Conformity expConf = new Conformity { InputName = "Ст. Этьен", ExistedName = "Сент-Этьен" }; Team neutralTeam = new Team { Name = "Ст. Этьен", SportType = sport }; NamingMatcher matcher = new NamingMatcher(unit); List <Conformity> neutralConformities = matcher.ResolveNaming(neutralTeam); Conformity newConf = neutralConformities.FirstOrDefault(); Assert.AreEqual(expConf.InputName, newConf.InputName); Assert.AreEqual(expConf.ExistedName, newConf.ExistedName); }
public ConformityViewModel GetConformityViewModel(int id) { Log.Info("Getting ConformityViewModel..."); Conformity confByID = new Conformity(); IEnumerable <Conformity> conformities = new List <Conformity>(); try { confByID = this.dataUnit.GetRepository <Conformity>() .Get(x => x.Id == id).FirstOrDefault(); conformities = this.dataUnit.GetRepository <Conformity>() .Get(x => x.InputName == confByID.InputName) .GroupBy(x => x.ExistedName) .Select(x => x.First()); } catch (Exception e) { Log.Error("Exception when trying to get conformities data from DB", e); } List <ConformityDto> conformitiesDtos = new List <ConformityDto>(); foreach (Conformity conf in conformities) { conformitiesDtos.Add(Mapper.Map <Conformity, ConformityDto>(conf)); } Log.Info("Successful getting ConformityViewModel..."); return(new ConformityViewModel(confByID.InputName, confByID.Id, conformitiesDtos)); }
public void Save(ConformityViewModel model) { Log.Info("Managing ConformityViewModel post..."); try { if (model.ConformityId != 0) { Conformity conf = this.dataUnit.GetRepository <Conformity>() .Get(x => x.Id == model.ConformityId) .FirstOrDefault(); this.Saving(conf.InputName, conf.ExistedName, false); } if (model.ExistedName != null) { if (this.CheckExistedNamesInDB(model.ExistedName)) { this.Saving(model.InputName, model.ExistedName, false); } else { this.Saving(model.InputName, model.ExistedName, true); } } } catch (Exception e) { Log.Error("Exception when trying to manage ConformityViewModel and DB", e); } Log.Info("Successful manaing ConformityViewModel..."); }
public void OneConformitySportEventsSaving() { ResultDTO r1 = new ResultDTO { TeamName = "Динамо Киев", IsHome = true, Score = 3 }; ResultDTO r2 = new ResultDTO { TeamName = "Ст. Этьен", IsHome = false, Score = 1 }; SportEventDTO ev = new SportEventDTO { Date = DateTime.Now.Ticks, SportType = "Football", Results = new List <ResultDTO> { r1, r2 } }; List <SportEventDTO> events = new List <SportEventDTO>(); events.Add(ev); IUnitOfWork unit = new EFUnitOfWork(this.databaseSportsContext); this.eventService.SaveSportEvents(events); Team team1 = unit.GetRepository <TeamName>() .Get(tn => tn.Name == "Динамо Киев") .Select(tn => tn.Team) .FirstOrDefault(); Assert.IsNotNull(team1); Team team2 = unit.GetRepository <TeamName>().Get(tn => tn.Name == "Ст. Этьен").Select(tn => tn.Team).FirstOrDefault(); Assert.IsNull(team2); IEnumerable <SportEvent> emptyEvents = unit.GetRepository <SportEvent>().Get(e => e.Results.Count() == 0); Assert.IsTrue(emptyEvents.Count() == 0); IEnumerable <SportEvent> oneResultEvents = unit.GetRepository <SportEvent>().Get(e => e.Results.Count() == 1); Assert.IsTrue(oneResultEvents.Count() == 0); Conformity conf2 = unit.GetRepository <Conformity>().Get(c => c.InputName == "Ст. Этьен").FirstOrDefault(); Assert.IsTrue(conf2.TempResult != null); Assert.IsTrue(conf2.TempResult.Team == null); IEnumerable <TempResult> tempResults = unit.GetRepository <TempResult>().Get(); Assert.IsTrue(tempResults.Count() == 2); TempResult tempResult1 = unit.GetRepository <TempResult>().Get(r => r.Team != null).FirstOrDefault(); Assert.IsTrue(tempResult1.Team.Name == "Динамо Киев"); Assert.IsTrue(conf2.TempResult.TempSportEvent.Id == tempResult1.TempSportEvent.Id); }
public void BothConformitiesSportEventsSaving() { ResultDTO r1 = new ResultDTO { TeamName = "Маккаби Тель-Авив", IsHome = true, Score = 2 }; ResultDTO r2 = new ResultDTO { TeamName = "Ст. Этьен", IsHome = false, Score = 1 }; SportEventDTO ev = new SportEventDTO { Date = DateTime.Now.Ticks, SportType = "Football", Results = new List <ResultDTO> { r1, r2 } }; List <SportEventDTO> events = new List <SportEventDTO>(); events.Add(ev); IUnitOfWork unit = new EFUnitOfWork(this.databaseSportsContext); this.eventService.SaveSportEvents(events); Team team1 = unit.GetRepository <TeamName>() .Get(tn => tn.Name == "Маккаби Тель-Авив") .Select(tn => tn.Team) .FirstOrDefault(); Assert.IsNull(team1); Team team2 = unit.GetRepository <TeamName>().Get(tn => tn.Name == "Ст. Этьен").Select(tn => tn.Team).FirstOrDefault(); Assert.IsNull(team2); IEnumerable <SportEvent> simpleEvents = unit.GetRepository <SportEvent>().Get(e => e.Results.Count() == 0); Assert.IsTrue(simpleEvents.Count() == 0); Conformity conf1 = unit.GetRepository <Conformity>().Get(c => c.InputName == "Маккаби Тель-Авив").FirstOrDefault(); Assert.IsNotNull(conf1); Conformity conf2 = unit.GetRepository <Conformity>().Get(c => c.InputName == "Ст. Этьен").FirstOrDefault(); Assert.IsNotNull(conf2); IEnumerable <TempResult> tempResults = unit.GetRepository <TempResult>().Get(); Assert.IsTrue(tempResults.Count() == 2); IEnumerable <TempSportEvent> tempEvents = unit.GetRepository <TempSportEvent>().Get(); Assert.IsTrue(tempEvents.Count() == 1); }
/// <summary> /// Returns List<Conformity> with >50% conformities to given name. /// </summary> /// <param name="inputTeam"></param> /// <returns></returns> public List <Conformity> ResolveNaming(Team inputTeam) //TODO add typisation and locals. { List <Conformity> conformities = new List <Conformity>(); IEnumerable <Team> teams = this.unit.GetRepository <Team>() .Get(filter: (t) => t.SportType.Name == inputTeam.SportType.Name, includeProperties: "Names,SportType"); Team simpleCheckTeam = this.SimpleCheck(teams, inputTeam.Name); if (simpleCheckTeam != null) { return(null); } string preparedInputName = this.PrepareString(inputTeam.Name); List <Team> matches = new List <Team>(); double comparingResult = this.Compairing(teams, preparedInputName, out matches); if (comparingResult == 100 && matches.Count == 1) { foreach (TeamName name in inputTeam.Names) { matches[0].Names.Add(name); } this.unit.GetRepository <Team>().Update(matches[0]); this.unit.SaveChanges(); return(null); } else if (comparingResult < 50) { this.unit.GetRepository <Team>().Insert(inputTeam); this.unit.SaveChanges(); return(null); } else { foreach (Team team in matches) { Conformity conf = new Conformity(); conf.InputName = inputTeam.Name; conf.ExistedName = team.Name; conformities.Add(conf); } return(conformities); } }
public override string ToString() { return(Conformity.ToString() + " " + Morales.ToString()); }
/// <summary> /// Получить проживание /// </summary> /// <param name="address">Адрес источника</param> /// <param name="source">Наименование источника</param> /// <returns>Проживание</returns> public static Prozhivanie GetProzhivanie(Address address, IDataService defDS, IDataService syncDS, Source source, ref List <DataObject> arrToUpd, ref Dictionary <string, List <DataObject> > arrConformity) { if (address == null) { return(null); } var type = typeof(Prozhivanie); var nameType = type.FullName; //сначала поищем среди объектов на обновление var obj = new MapperHelper.PkDataObject { __PrimaryKey = address.Guid }; var prozivanie = (Prozhivanie)arrToUpd.FirstOrDefault(x => x.GetType().FullName == nameType && x.__PrimaryKey.Equals(obj.__PrimaryKey)); if (prozivanie != null) { return(prozivanie); } var typeAddress = arrConformity[MapperHelper.sObjectType].Cast <ObjectType>() .FirstOrDefault(x => x.name == nameType) ?? syncDS.Query <ObjectType>(ObjectType.Views.ObjectTypeE) .FirstOrDefault(x => x.name == nameType) ?? new ObjectType { name = nameType, id = type.Name }; if (typeAddress.GetStatus() == ObjectStatus.Created) { arrConformity[MapperHelper.sObjectType].Add(typeAddress); } var conformity = arrConformity[MapperHelper.sConformity].Cast <Conformity>().FirstOrDefault(x => x.Source.__PrimaryKey.Equals(source.__PrimaryKey) && x.Type.__PrimaryKey.Equals(typeAddress.__PrimaryKey) && x.pkSource.Equals(address.Guid)); if (conformity == null && typeAddress.GetStatus() != ObjectStatus.Created && source.GetStatus() != ObjectStatus.Created) { conformity = syncDS.Query <Conformity>(Conformity.Views.ConformityE).FirstOrDefault(x => x.Source.__PrimaryKey.Equals(source.__PrimaryKey) && x.Type.__PrimaryKey.Equals(typeAddress.__PrimaryKey) && x.pkSource.Equals(address.Guid)); } if (conformity == null) { var adr = new Prozhivanie { __PrimaryKey = address.Guid }; prozivanie = defDS.Query <Prozhivanie>(Prozhivanie.Views.ProzhivanieE) .FirstOrDefault(x => x.__PrimaryKey.Equals(adr.__PrimaryKey)); if (prozivanie == null) { var terr = address.Territory.Guid.ToString(); var query = defDS.Query <Prozhivanie>(Prozhivanie.Views.ProzhivanieE).Where(x => x.Territoriia.__PrimaryKey.ToString().Equals(terr) && x.NomerDoma == address.Number && x.NomerStroeniia == address.HouseNumber && x.Kvartira == address.Appartment); if (address.Street == null) { query = query.Where(x => x.Ulitca == null); } else { var street = address.Street?.Guid.ToString(); query = query.Where(x => x.Ulitca != null && x.Ulitca.__PrimaryKey.ToString().Equals(street)); } prozivanie = query.FirstOrDefault(); } } else { obj = new MapperHelper.PkDataObject { __PrimaryKey = conformity.pkDest }; prozivanie = defDS.Query <Prozhivanie>(Prozhivanie.Views.ProzhivanieE).FirstOrDefault(x => x.__PrimaryKey.Equals(obj.__PrimaryKey)); prozivanie = new AddressToProzhivanieMapper().Map(address, prozivanie); if (prozivanie.GetStatus() == ObjectStatus.Altered) { arrToUpd.Add(prozivanie); } } if (prozivanie == null) { prozivanie = new Prozhivanie(); prozivanie = new AddressToProzhivanieMapper().Map(address, prozivanie); arrToUpd.Add(prozivanie); } if (conformity == null) { conformity = new Conformity { Source = source, Type = typeAddress, pkSource = address.Guid, pkDest = new Guid(prozivanie.__PrimaryKey.ToString()) }; arrConformity[MapperHelper.sConformity].Add(conformity); } return(prozivanie); }
/// <summary> /// Обработка объекта /// </summary> /// <param name="obj">объект, который пришел</param> /// <param name="state">тип изменения, входящего объекта</param> /// <param name="type">тип объекта, в который преобразуем</param> /// <param name="mapper">маппер для преобразования</param> /// <param name="attrs">список изменяемых свойств</param> /// <param name="source">Источник изменений</param> /// <param name="arrToUpd">Список обновляемых объектов данных</param> /// <param name="arrConformity">Список обновляемых объектов синхронизации</param> private void ProcessObject(SyncXMLDataObject obj, tState state, Type type, IPropertyMapperWithChangedAttrs mapper, List <string> attrs, Source source, ref List <DataObject> arrToUpd, ref Dictionary <string, List <DataObject> > arrConformity) { if (obj == null) { return; } var view = mapper.GetView(); var nameType = type.FullName; var otype = arrConformity[sObjectType].Cast <ObjectType>().FirstOrDefault(x => x.name == nameType) ?? _syncDS.Query <ObjectType>(ObjectType.Views.ObjectTypeE) .FirstOrDefault(x => x.name == nameType) ?? new ObjectType { name = nameType, id = type.Name }; if (otype.GetStatus() == ObjectStatus.Created) { arrConformity[sObjectType].Add(otype); } Conformity conformity = null; if (otype.GetStatus() != ObjectStatus.Created && source.GetStatus() != ObjectStatus.Created) { conformity = _syncDS.Query <Conformity>(Conformity.Views.ConformityE).FirstOrDefault(x => x.Source.__PrimaryKey.Equals(source.__PrimaryKey) && x.Type.__PrimaryKey.Equals(otype.__PrimaryKey) && x.pkSource.Equals(obj.Guid)); } if (state != tState.deleted) //создание/изменение { DataObject dest = null; if (conformity != null) //ищем по pk { dest = GetDataObject(type, view, conformity.pkDest); } else { dest = GetDataObject(type, view, obj.Guid); } if (dest == null) //ищем по альтернативному ключу { var queryAlt = mapper.GetAltKey(obj, _defDS, _syncDS, source, ref arrToUpd, ref arrConformity); dest = queryAlt?.FirstOrDefault(); if (queryAlt != null && dest != null) { LogService.LogInfo($"BusMessageHandlerService: Удалось найти объект(pk-{obj.Guid}) по альтернативному ключу для типа {nameType}. Сопоставленный объект объект(pk-{dest.__PrimaryKey})"); } } if (dest == null) { dest = (DataObject)Activator.CreateInstance(type); } dest.GetStatus(); dest = mapper.Map(obj, dest, attrs); // Проверяем было ли помещено создание объекта на апдейт. Если да, то такой объект уже считается существующим и статус нового объекта с таким же ключом меняется на Altered. var alreadyExistsCreatedObj = arrToUpd.Exists(x => PKHelper.EQPK(x, dest) && x.GetStatus(false) == ObjectStatus.Created); if (alreadyExistsCreatedObj) { dest.SetLoadingState(LoadingState.Loaded); dest.SetStatus(ObjectStatus.Altered); } arrToUpd.Add(dest); //заполнение мастеров/////////////////////////////////////////////////////////////////////////////// mapper.SetMasters(obj, dest, attrs, _defDS, _syncDS, source, ref arrToUpd, ref arrConformity); if (conformity == null) { conformity = new Conformity { Source = source, Type = otype, pkSource = obj.Guid, pkDest = new Guid(dest.__PrimaryKey.ToString()) }; arrConformity[sConformity].Add(conformity); } } else //удаление { if (conformity != null) { var count = _syncDS.Query <Conformity>(Conformity.Views.ConformityE).Count(x => x.Type.__PrimaryKey.Equals(otype.__PrimaryKey) && x.pkDest.Equals(conformity.pkDest)); if (count >= 1) { conformity.SetStatus(ObjectStatus.Deleted); arrConformity[sConformity].Add(conformity); } if (count == 1) { var dest = GetDataObject(type, view, conformity.pkDest); if (dest != null) { dest.SetStatus(ObjectStatus.Deleted); arrToUpd.Add(dest); } } } } }