Пример #1
0
        public async Task <IActionResult> Edit(JobTitleViewModel model, string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                await BindControls(model);

                Title     = HrResources.JobTitle;
                ReturnUrl = returnUrl;
                return(View(model));
            }


            if (model.Id.GetValueOrDefault() <= 0)
            {
                return(NotFound());
            }

            var jobTitle = await Uow.JobTitles.Where(t => t.Id == model.Id && !t.IsDeleted).SingleOrDefaultAsync();

            if (jobTitle == null)
            {
                return(NotFound());
            }

            jobTitle.DepartmentId = model.DepartmentId.GetValueOrDefault();
            jobTitle.ModifierId   = UserId;
            jobTitle.ModifiedDate = DateTime.Now;


            var translates = await Uow.JobTitleTranslates.Where(t => t.Id == model.Id).ToListAsync();

            for (var i = 0; i < model.Texts.Count; i++)
            {
                var translate = new JobTitleTranslate {
                    Id = model.Id.GetValueOrDefault(), CultureId = model.Texts[i].Key, Text = model.Texts[i].Value
                };
                if (await Uow.JobTitleTranslates.Where(t => t.Text == translate.Text && t.Id != model.Id).AnyAsync())
                {
                    ModelState.AddModelError($"{nameof(JobTitleViewModel.Texts)}[{i}].Value", string.Format(ValidationResources.DuplicatedValidationError, "ტექსტი"));
                    continue;
                }

                var dbTranslate = translates.SingleOrDefault(t => t.CultureId == translate.CultureId);
                if (dbTranslate == null)
                {
                    dbTranslate = translate;
                    Uow.JobTitleTranslates.Add(dbTranslate);
                }
                else
                {
                    dbTranslate.Text = translate.Text;
                }
            }

            await Uow.SaveAsync();

            return(!string.IsNullOrEmpty(returnUrl)
                ? RedirectToLocal(returnUrl)
                : RedirectToAction(nameof(Index)));
        }
Пример #2
0
        public async Task <IActionResult> Create(JobTitleViewModel model, string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                await BindControls(model);

                Title     = HrResources.JobTitle;
                ReturnUrl = returnUrl;
                return(View(model));
            }
            var jobTitle = new JobTitle
            {
                DepartmentId = model.DepartmentId.GetValueOrDefault(),
                CreatorId    = UserId
            };



            var translates = new List <JobTitleTranslate>();//  model.Texts.Select(x => );

            for (var i = 0; i < model.Texts.Count; i++)
            {
                var translate = new JobTitleTranslate {
                    Dictionary = jobTitle, CultureId = model.Texts[i].Key, Text = model.Texts[i].Value
                };
                if (await Uow.JobTitleTranslates.Where(t => t.Text == translate.Text).AnyAsync())
                {
                    ModelState.AddModelError($"{nameof(JobTitleViewModel.Texts)}[{i}].Value", string.Format(ValidationResources.DuplicatedValidationError, "ტექსტი"));
                    continue;
                }

                translates.Add(translate);
            }

            if (!ModelState.IsValid)
            {
                await BindControls(model);

                Title     = HrResources.JobTitle;
                ReturnUrl = returnUrl;
                return(View(model));
            }

            Uow.JobTitles.Add(jobTitle);
            Uow.JobTitleTranslates.AddRange(translates);
            await Uow.SaveAsync();

            return(!string.IsNullOrEmpty(returnUrl)
                ? RedirectToLocal(returnUrl)
                : RedirectToAction(nameof(Index)));
        }