예제 #1
0
        public async Task <ActionResult> Create(CreateViewModel viewModel, string connectionId)
        {
            //Добавление элемента в базу
            try
            {
                //Проверка введенных данных
                if (ModelState.IsValid)
                {
                    // Добавление нового пользователя в базу
                    var user = new AppUser {
                        UserName = viewModel.UserName,
                        Email    = viewModel.Email,
                        Role     = viewModel.Role
                    };
                    var result = await _userManager.CreateAsync(user, viewModel.Password);

                    if (result.Succeeded)
                    {
                        await _userManager.AddToRoleAsync(user, user.Role);

                        await _userImageRepository.AddUserImage(user.UserName, viewModel.Image, _environment);

                        // Добавление счетчика прочитанных новостей
                        await _readedNoticeRepository.AddUserReadedNoticesCounter(user.Id);

                        return(RedirectToAction("Index", new { ajaxLoad = true }));
                    }
                    else
                    {
                        foreach (var item in result.Errors)
                        {
                            ModelState.AddModelError("", item.Description);
                        } // foreach

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

                        return(PartialView(viewModel));
                    } // if
                }     //if
            }
            catch (DbUpdateException ex) { _message = DbErrorsInterpreter.GetDbUpdateExceptionMessage(ex); }
            catch { _message = Messages.createErrorMessage; } // try-catch

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

            // Отправка push up уведомления при наличии исключения
            if (_message != null)
            {
                if (_message != null)
                {
                    await _hub.Clients.Client(connectionId).SendAsync("Error", _message);
                }
            }

            return(PartialView(viewModel));
        } // Create
예제 #2
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
        public async Task <IActionResult> Edit(EditViewModel viewModel, string connectionId)
        {
            // Индикатор добавления группы для станка
            bool groupAdded = false;

            //Редактирование элемента в базе
            try
            {
                //Проверка введенных данных
                if (ModelState.IsValid)
                {
                    // Добавление группы станков при отсутствии аналога или уже созданной группы
                    if (viewModel.MachineTypeId == 0)
                    {
                        viewModel.MachineTypeId = await _machineTypeRepository.AddMachineType(viewModel.MachineType);

                        groupAdded = true;
                    } // if

                    // Изменение станка
                    var machine = await _machineRepository.GetMachine(viewModel.Id);

                    machine.Name          = viewModel.Name;
                    machine.MachineTypeId = viewModel.MachineTypeId;

                    await _machineRepository.EditMachine(machine);

                    await _machineTypeRepository.CheckEmptyGroups();

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

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

            // Удаление созданной группы для станка
            if (groupAdded)
            {
                await _machineTypeRepository.RemoveMachineType(viewModel.MachineTypeId);
            }

            viewModel.Machines = await _machineRepository.GetMachines();

            viewModel.MachineTypes = await _machineTypeRepository.GetMachineTypes();

            if (_message != null)
            {
                await _hub.Clients.Client(connectionId).SendAsync("Error", _message);
            }
            return(PartialView(viewModel));
        } // Edit
예제 #4
0
        public async Task <IActionResult> Edit(EditViewModel viewModel, string connectionId)
        {
            //Редактирование элемента в базе
            try
            {
                // Проверка номера телефона на кол-во цифр
                Regex regex = new Regex(@"\D+");
                viewModel.Phone = regex.Replace(viewModel.Phone, "");
                if (viewModel.Phone.Length < 7)
                {
                    ModelState.AddModelError("Phone", Messages.phoneMinLengthErrorMessage);
                }

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

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

                    // Редактируемый элемент
                    var requisition = await _requisitionRepository.GetRequisition(viewModel.Id);

                    requisition.Phone       = viewModel.Phone;
                    requisition.ContactName = viewModel.ContactName;
                    requisition.Location    = viewModel.Location;
                    requisition.MachineId   = machine.Id;
                    requisition.Comment     = viewModel.Comment;

                    await _requisitionRepository.EditRequisition(requisition);

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

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

            viewModel.Machines = await _machineRepository.GetMachines();

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

            return(PartialView(viewModel));
        } // Edit
        public async Task <IActionResult> Create(CreateViewModel viewModel, string connectionId)
        {
            // Индикатор добавления группы для станка
            bool groupAdded = false;

            //Добавление элемента в базу
            try
            {
                //Проверка введенных данных
                if (ModelState.IsValid)
                {
                    // Добавление группы станков при отсутствии аналога
                    if (viewModel.MachineTypeId == 0)
                    {
                        viewModel.MachineTypeId = await _machineTypeRepository.AddMachineType(viewModel.MachineType);

                        groupAdded = true;
                    } // if

                    await _machineRepository.AddMachine(new Machine { Name = viewModel.Name, MachineTypeId = viewModel.MachineTypeId });

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

                    return(RedirectToAction("Index", new { ajaxLoad = true }));
                } //if
            }
            catch (DbUpdateException ex) { _message = DbErrorsInterpreter.GetDbUpdateExceptionMessage(ex); }
            catch { _message = Messages.createErrorMessage; } // try-catch

            // Удаление созданной группы для станка
            if (groupAdded)
            {
                await _machineTypeRepository.RemoveMachineType(viewModel.MachineTypeId);
            }

            // Подгрузка вспомогательных коллекция
            viewModel.Machines = await _machineRepository.GetMachines();

            viewModel.MachineTypes = await _machineTypeRepository.GetMachineTypes();

            if (_message != null)
            {
                await _hub.Clients.Client(connectionId).SendAsync("Error", _message);
            }
            return(PartialView(viewModel));
        } // Create
예제 #6
0
        public async Task <IActionResult> Create(CreateViewModel viewModel, string connectionId, bool more)
        {
            //Добавление элемента в базу
            try
            {
                // Проверка номера телефона на кол-во цифр
                Regex regex = new Regex(@"\D+");
                viewModel.Phone = regex.Replace(viewModel.Phone, "");
                if (viewModel.Phone.Length < 7)
                {
                    ModelState.AddModelError("Phone", Messages.phoneMinLengthErrorMessage);
                }

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

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

                    // Добавляемый элемент
                    var requisition = new Requisition
                    {
                        UserName    = User.Identity.Name,
                        CreateDate  = DateTime.Now,
                        Phone       = viewModel.Phone,
                        ContactName = viewModel.ContactName,
                        Location    = viewModel.Location,
                        MachineId   = machine.Id,
                        Comment     = viewModel.Comment
                    };

                    await _requisitionRepository.AddRequisition(requisition);

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

                    // Добавление дополнительной записи
                    if (more)
                    {
                        return(RedirectToAction("Create", new {
                            ajaxLoad = true,
                            phone = viewModel.Phone,
                            contactName = viewModel.ContactName,
                            location = viewModel.Location
                        }));
                    } // if

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

            viewModel.Machines = await _machineRepository.GetMachines();

            if (_message != null)
            {
                await _hub.Clients.Client(connectionId).SendAsync("Error", _message);
            }
            return(PartialView(viewModel));
        } // Create
예제 #7
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
예제 #8
0
        public async Task <IActionResult> Create(CreateViewModel viewModel, string connectionId, bool more)
        {
            //Добавление элемента в базу
            try
            {
                // Проверка количества загруженных фото
                if (viewModel.Images != null && viewModel.Images.Count > 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 = new Proposal
                    {
                        UserName      = User.Identity.Name,
                        CreateDate    = DateTime.Now,
                        Location      = viewModel.Location,
                        MachineId     = machine.Id,
                        PurshasePrice = (int)viewModel.PurshasePrice,
                        SellingPrice  = (int)viewModel.SellingPrice,
                        Comment       = viewModel.Comment
                    };

                    await _proposalRepository.AddProposal(proposal);

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

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

                    // Добавление дополнительной записи
                    if (more)
                    {
                        return(RedirectToAction("Create", new {
                            ajaxLoad = true,
                            location = viewModel.Location
                        }));
                    } // if

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

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