예제 #1
0
        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);
        }
예제 #2
0
        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,
                        },
                    },
                }
            });
        }