public VerbSaveResult SaveVerb(VerbDto dto) { var result = new VerbSaveResult(); if (!result.Success) { return(result); } var verb = _verbRepository.GetSingle(x => x.Id == dto.Id); if (verb == null) { verb = new Verb(); _verbRepository.Add(verb); } verb.InfinitiveEn = dto.InfinitiveEn; verb.InfinitiveRu = dto.InfinitiveRu; verb.IsIrregular = dto.IsIrregular; var personVerbToVerbs = _personVerbToVerbRepository.GetAll().Where(x => x.VerbId == verb.Id); foreach (var personVerbToVerb in personVerbToVerbs) { if (dto.PersonVerbToVerbs.Select(x => x.Id).All(x => x != personVerbToVerb.Id)) { _personVerbToVerbRepository.Delete(personVerbToVerb); } } foreach (var personVerbToVerbDto in dto.PersonVerbToVerbs) { var personVerbToVerb = personVerbToVerbs.FirstOrDefault(x => x.Id == personVerbToVerbDto.Id); if (personVerbToVerb == null) { personVerbToVerb = new PersonVerbToVerb(); if (personVerbToVerbDto.Id.HasValue) { personVerbToVerb.Id = personVerbToVerbDto.Id.Value; } verb.PersonVerbToVerbs.Add(personVerbToVerb); } personVerbToVerb.VerbId = verb.Id; personVerbToVerb.PersonVerbId = personVerbToVerbDto.PersonVerbId; personVerbToVerb.NumberVerbId = personVerbToVerbDto.NumberVerbId; personVerbToVerb.TenseVerbId = personVerbToVerbDto.TenseVerbId; personVerbToVerb.VerbEn = personVerbToVerbDto.VerbEn; personVerbToVerb.VerbRu = personVerbToVerbDto.VerbRu; } UnitOfWork.SaveChanges(); result.Id = verb.Id; return(result); }
private Dictionary <int, Dictionary <int, Dictionary <int, PersonVerbsToVerbsViewModel> > > CreateVerbForms(VerbDto dto) { var isFull = dto.PersonVerbToVerbs.Length != 0; var verbPresentSimpleSingular1 = GetPersonVerb(dto.PersonVerbToVerbs, TenseVerbs.PresentSimple, PersonVerbs.First, NumberVerbs.Singular); var verbPresentSimplePlural1 = GetPersonVerb(dto.PersonVerbToVerbs, TenseVerbs.PresentSimple, PersonVerbs.First, NumberVerbs.Plural); var verbPresentSimpleSingular2 = GetPersonVerb(dto.PersonVerbToVerbs, TenseVerbs.PresentSimple, PersonVerbs.Second, NumberVerbs.Singular); var verbPresentSimplePlural2 = GetPersonVerb(dto.PersonVerbToVerbs, TenseVerbs.PresentSimple, PersonVerbs.Second, NumberVerbs.Plural); var verbPresentSimpleSingular3 = GetPersonVerb(dto.PersonVerbToVerbs, TenseVerbs.PresentSimple, PersonVerbs.Third, NumberVerbs.Singular); var verbPresentSimplePlural3 = GetPersonVerb(dto.PersonVerbToVerbs, TenseVerbs.PresentSimple, PersonVerbs.Third, NumberVerbs.Plural); return(new Dictionary <int, Dictionary <int, Dictionary <int, PersonVerbsToVerbsViewModel> > > { [(int)TenseVerbs.PresentSimple] = new Dictionary <int, Dictionary <int, PersonVerbsToVerbsViewModel> > { [(int)PersonVerbs.First] = new Dictionary <int, PersonVerbsToVerbsViewModel> { [(int)NumberVerbs.Singular] = new PersonVerbsToVerbsViewModel { TenseVerbId = (int)TenseVerbs.PresentSimple, PersonVerbId = (int)PersonVerbs.First, NumberVerbId = (int)NumberVerbs.Singular, VerbId = dto.Id, VerbEn = isFull ? verbPresentSimpleSingular1.verbEn : dto.InfinitiveEn, VerbRu = isFull ? verbPresentSimpleSingular1.verbRu : dto.InfinitiveRu, }, [(int)NumberVerbs.Plural] = new PersonVerbsToVerbsViewModel { TenseVerbId = (int)TenseVerbs.PresentSimple, PersonVerbId = (int)PersonVerbs.First, NumberVerbId = (int)NumberVerbs.Plural, VerbId = dto.Id, VerbEn = isFull ? verbPresentSimplePlural1.verbEn : dto.InfinitiveEn, VerbRu = isFull ? verbPresentSimplePlural1.verbRu : dto.InfinitiveRu, }, }, [(int)PersonVerbs.Second] = new Dictionary <int, PersonVerbsToVerbsViewModel> { [(int)NumberVerbs.Singular] = new PersonVerbsToVerbsViewModel { TenseVerbId = (int)TenseVerbs.PresentSimple, PersonVerbId = (int)PersonVerbs.Second, NumberVerbId = (int)NumberVerbs.Singular, VerbId = dto.Id, VerbEn = isFull ? verbPresentSimpleSingular2.verbEn : dto.InfinitiveEn, VerbRu = isFull ? verbPresentSimpleSingular2.verbRu : dto.InfinitiveRu, }, [(int)NumberVerbs.Plural] = new PersonVerbsToVerbsViewModel { TenseVerbId = (int)TenseVerbs.PresentSimple, PersonVerbId = (int)PersonVerbs.Second, NumberVerbId = (int)NumberVerbs.Plural, VerbId = dto.Id, VerbEn = isFull ? verbPresentSimplePlural2.verbEn : dto.InfinitiveEn, VerbRu = isFull ? verbPresentSimplePlural2.verbRu : dto.InfinitiveRu, }, }, [(int)PersonVerbs.Third] = new Dictionary <int, PersonVerbsToVerbsViewModel> { [(int)NumberVerbs.Singular] = new PersonVerbsToVerbsViewModel { TenseVerbId = (int)TenseVerbs.PresentSimple, PersonVerbId = (int)PersonVerbs.Third, NumberVerbId = (int)NumberVerbs.Singular, VerbId = dto.Id, VerbEn = isFull ? verbPresentSimpleSingular3.verbEn : dto.InfinitiveEn + "s", VerbRu = isFull ? verbPresentSimpleSingular3.verbRu : dto.InfinitiveRu, }, [(int)NumberVerbs.Plural] = new PersonVerbsToVerbsViewModel { TenseVerbId = (int)TenseVerbs.PresentSimple, PersonVerbId = (int)PersonVerbs.Third, NumberVerbId = (int)NumberVerbs.Plural, VerbId = dto.Id, VerbEn = isFull ? verbPresentSimplePlural3.verbEn : dto.InfinitiveEn, VerbRu = isFull ? verbPresentSimplePlural3.verbRu : dto.InfinitiveRu, }, }, } }); }