public IActionResult Create()
        {
            var viewModel = new ChildInputModel();

            viewModel.GroupsItems  = this.groupsService.GetAllAsKeyValuePairs();
            viewModel.SchoolsItems = this.schoolsService.GetAllAsKeyValuePairs();

            return(this.View(viewModel));
        }
        public async Task <IActionResult> Edit(int id, ChildInputModel input)
        {
            var currentChild = this.childrenRepository.AllAsNoTracking()
                               .FirstOrDefault(x => x.Id == id);

            var groupId = input.GroupName == null ? currentChild.NurseryGroupId
                                                        : int.Parse(input.GroupName);

            var child = new Child
            {
                Id             = input.Id,
                FirstName      = input.FirstName,
                MiddleName     = input.MiddleName,
                LastName       = input.LastName,
                Address        = input.Address,
                IsDeleted      = currentChild.IsDeleted,
                DeletedOn      = currentChild.DeletedOn,
                CreatedOn      = currentChild.CreatedOn,
                ModifiedOn     = input.ModifiedOn,
                NurseryGroupId = groupId,
                DateOfBirth    = currentChild.DateOfBirth,
                EGN            = currentChild.EGN,
                Gender         = currentChild.Gender,
            };

            if (id != child.Id)
            {
                return(this.NotFound());
            }

            if (this.ModelState.IsValid)
            {
                try
                {
                    this.childrenRepository.Update(child);
                    await this.childrenRepository.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!this.ChildExists(child.Id))
                    {
                        return(this.NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(this.RedirectToAction(nameof(this.Index)));
            }

            return(this.View(child));
        }
        public async Task <IActionResult> Create(ChildInputModel input)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(input));
            }

            await this.childrenService.AddAsync(input);

            return(this.RedirectToAction(nameof(this.Index)));
        }
        public async Task AddAsync(ChildInputModel input)
        {
            var child = new Child
            {
                FirstName      = input.FirstName,
                MiddleName     = input.MiddleName,
                LastName       = input.LastName,
                Gender         = (Gender)input.Gender,
                DateOfBirth    = input.DateOfBirth,
                EGN            = input.EGN,
                Address        = input.Address,
                NurseryGroupId = int.Parse(input.GroupName),
            };

            await this.childrenRepository.AddAsync(child);

            await this.childrenRepository.SaveChangesAsync();
        }