Пример #1
0
        public async Task <IActionResult> Edit(EditViewModel viewModel, string connectionId)
        {
            //Редактирование элемента в базе
            try
            {
                // Проверка количества загруженных фото
                if ((viewModel.Images != null ? viewModel.Images.Count : 0) +
                    (viewModel.ProposalImages != null ? viewModel.ProposalImages.Count : 0) > 7)
                {
                    ModelState.AddModelError("", "Максимальное кол-во фото в предложении - 7 шт.");
                }

                //Проверка введенных данных
                if (ModelState.IsValid)
                {
                    // Добавление станка при отсутствии в базе
                    var machine = await _machineRepository.GetMachine(viewModel.Machine);

                    if (machine == null)
                    {
                        machine = await _machineRepository.AddMachine(viewModel.Machine, await _machineTypeRepository.AddMachineType("Без группы"));
                    }

                    // Добавляемый элемент
                    var proposal = await _proposalRepository.GetProposal(viewModel.Id);

                    proposal.Location      = viewModel.Location;
                    proposal.MachineId     = machine.Id;
                    proposal.PurshasePrice = (int)viewModel.PurshasePrice;
                    proposal.SellingPrice  = (int)viewModel.SellingPrice;
                    proposal.Comment       = viewModel.Comment;

                    await _proposalRepository.EditProposal(proposal);

                    try
                    {
                        await _proposalImageRepository.CheckProposalImages(proposal.Id, viewModel.ProposalImages, _environment);

                        await _proposalImageRepository.AddProposalImages(proposal.Id, viewModel.Images, _environment);
                    }
                    catch { }

                    await _hub.Clients.Client(connectionId).SendAsync("Success", Messages.successUpdateMessage);

                    return(RedirectToAction("Details", new { id = proposal.Id, ajaxLoad = true }));
                } //if
            }
            catch (DbUpdateException ex) { _message = DbErrorsInterpreter.GetDbUpdateExceptionMessage(ex); }
            catch { _message = Messages.updateErrorMessage; } // try-catch

            if (_message != null)
            {
                await _hub.Clients.Client(connectionId).SendAsync("Error", _message);
            }
            return(PartialView(viewModel));
        } // Edit
Пример #2
0
        public async Task <ActionResult> Edit(EditViewModel viewModel, string connectionId, string previousUrl)
        {
            //Редактирование элемента в базе
            try
            {
                //Проверка введенных данных
                if (ModelState.IsValid)
                {
                    var user = await _userManager.FindByIdAsync(viewModel.Id);

                    var oldUserName = user.UserName; // старое имя пользователя

                    user.UserName = viewModel.UserName;
                    user.Email    = viewModel.Email;
                    user.Role     = viewModel.Role;

                    // Обновление пользователя
                    var result = await _userManager.UpdateAsync(user);

                    if (result.Succeeded)
                    {
                        // Роли в которых состоял пользователь
                        var roles = await _userManager.GetRolesAsync(user);

                        if (roles[0] != user.Role)
                        {
                            await _userManager.RemoveFromRolesAsync(user, roles);

                            await _userManager.AddToRoleAsync(user, user.Role);
                        } // if

                        // Проверка замены фотографии пользователя
                        if (viewModel.ImagePath == null)
                        {
                            // Удаление загруженного изображения пользователя
                            try
                            {
                                if (oldUserName != user.UserName)
                                {
                                    await _userImageRepository.RemoveUserImage(oldUserName, _environment);
                                }
                                else
                                {
                                    await _userImageRepository.RemoveUserImage(user.UserName, _environment);
                                }
                            } catch { }

                            // Загрузка нового изображения пользователя
                            if (viewModel.Image != null)
                            {
                                await _userImageRepository.AddUserImage(user.UserName, viewModel.Image, _environment);
                            } // if
                        }     // if

                        // Изменение заявок и преложений при редактировании имени пользователя
                        if (oldUserName != user.UserName)
                        {
                            await _requisitionRepository.EditRequisitions(oldUserName, user.UserName);

                            await _proposalRepository.EditProposal(oldUserName, user.UserName);

                            await _userImageRepository.EditUserImage(oldUserName, user.UserName, _environment);
                        } // if
                    }
                    else
                    {
                        foreach (var item in result.Errors)
                        {
                            ModelState.AddModelError("", item.Description);
                        } // foreach

                        // Подгрузка вспомогательных коллекций
                        viewModel.Roles = await _roleManager.Roles.ToListAsync();

                        ViewBag.PreviousUrl = previousUrl;

                        return(PartialView(viewModel));
                    } // if

                    if (User.Identity.Name == oldUserName)
                    {
                        await _signInManager.SignOutAsync();

                        await _signInManager.SignInAsync(user, true);
                    } // if

                    await _hub.Clients.Client(connectionId).SendAsync("Success", Messages.successUpdateMessage);

                    return(Redirect(previousUrl + $"?ajaxLoad=true"));
                } // if
            }
            catch (DbUpdateException ex) { _message = DbErrorsInterpreter.GetDbUpdateExceptionMessage(ex); }
            catch { _message = Messages.updateErrorMessage; } // try-catch

            // Подгрузка вспомогательных коллекций
            viewModel.Roles = await _roleManager.Roles.ToListAsync();

            ViewBag.PreviousUrl = previousUrl;

            if (_message != null)
            {
                await _hub.Clients.Client(connectionId).SendAsync("Error", _message);
            }
            return(PartialView(viewModel));
        } // Edit