Esempio n. 1
0
        public async Task <ActionResult <object> > DeleteGroupGoods(int id)
        {
            string msg;

            _logger.LogInformation($"Удаление группы номенклатуры {id}. Инициатор: " + _user.FullInfo);

            GroupGoodsObjectModel group = await _context.GroupsGoods.FindAsync(id);

            if (group == null)
            {
                _logger.LogError("Запрашиваемая группа номенклатуры не найдена: id={0}", id);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = "Запрашиваемая группа номенклатуры не найдена",
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            if (group.isReadonly && _user.Role != AccessLevelUserRolesEnum.ROOT)
            {
                msg = $"Группа находится статусе 'read only'. Ваш уровень доступа [{_user.Role}] не позволяет удалять/редактировать подобные объекты";
                _logger.LogError(msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            if (await _context.Goods.AnyAsync(good => good.GroupId == id))
            {
                msg = $"Запрашиваемая номенклатурная группа не может быть удалена (есть ссылки в номенклатуре): id={id}";
                _logger.LogError(msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            _context.GroupsGoods.Remove(group);
            await _context.SaveChangesAsync();

            msg = $"Группа номенклатуры удалена: id={id}";
            _logger.LogWarning(msg);
            return(new ObjectResult(new ServerActionResult()
            {
                Success = true,
                Info = msg,
                Status = StylesMessageEnum.info.ToString()
            }));
        }
Esempio n. 2
0
        public async Task <ActionResult <GroupGoodsObjectModel> > PostGroupGoods(GroupGoodsObjectModel ajaxGroup)
        {
            _logger.LogInformation("Создание номенклатурной группы. Инициатор: " + _user.FullInfo);
            string msg;

            ajaxGroup.Name        = ajaxGroup.Name.Trim();
            ajaxGroup.Information = ajaxGroup.Information.Trim();

            if (!ModelState.IsValid || string.IsNullOrEmpty(ajaxGroup.Name))
            {
                msg = "Ошибка в запросе";
                _logger.LogError(msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString(),
                    Tag = ModelState
                }));
            }

            if (_context.GroupsGoods.Any(x => x.Name.ToLower() == ajaxGroup.Name.ToLower()))
            {
                msg = "Номенклатурная группа с таким именем уже существует. Придумайте уникальное имя.";
                _logger.LogError(msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            if (_user.Role != AccessLevelUserRolesEnum.ROOT)
            {
                ajaxGroup.isDisabled       = false;
                ajaxGroup.isGlobalFavorite = false;
                ajaxGroup.isReadonly       = false;
            }

            _context.GroupsGoods.Add(ajaxGroup);
            await _context.SaveChangesAsync();

            HttpContext.Response.Cookies.Append("rowsCount", (await _context.GroupsGoods.CountAsync()).ToString());
            msg = "Номенклатурная группа создана";
            _logger.LogInformation(msg);
            return(new ObjectResult(new ServerActionResult()
            {
                Success = true,
                Info = msg,
                Status = StylesMessageEnum.success.ToString(),
                Tag = ajaxGroup.Id
            }));
        }
Esempio n. 3
0
        public async Task <ActionResult <object> > GetGroupGoods([FromQuery] PaginationParametersModel pagingParameters, int id)
        {
            GroupGoodsObjectModel group = await _context.GroupsGoods.Include(group => group.Avatar).FirstOrDefaultAsync(group => group.Id == id);

            if (group is null)
            {
                _logger.LogError("Запрашиваемая группа товаров не найдена: id={0}", id);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = "Запрашиваемая группа товаров не найдена",
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            IQueryable <GoodObjectModel> goods = _context.Goods.Where(good => good.GroupId == id);

            pagingParameters.Init(await goods.CountAsync());
            HttpContext.Response.Cookies.Append("rowsCount", pagingParameters.CountAllElements.ToString());
            goods = goods.OrderBy(good => good.Id);
            if (pagingParameters.PageNum > 1)
            {
                goods = goods.Skip(pagingParameters.Skip);
            }
            goods = goods.Take(pagingParameters.PageSize);

            return(new ObjectResult(new ServerActionResult()
            {
                Success = true,
                Info = "Запрос номенклатурнй группы обработан",
                Status = StylesMessageEnum.success.ToString(),
                Tag = new
                {
                    group.Id,
                    group.Name,
                    group.Information,

                    group.isDisabled,
                    group.isGlobalFavorite,
                    group.isReadonly,

                    noDelete = await _context.Goods.AnyAsync(good => good.GroupId == id),

                    Avatar = new
                    {
                        group.Avatar?.Id,
                        group.Avatar?.Name,
                        group.Avatar?.Information
                    },

                    goods = await goods.Select(good => new
                    {
                        good.Id,
                        good.Name,
                        good.Information,
                        good.Price,
                        good.UnitId,

                        good.isReadonly,
                        good.isDisabled,
                        good.isGlobalFavorite
                    }).ToListAsync(),

                    units = await _context.Units.Select(unit => new
                    {
                        unit.Id,
                        unit.Name,
                        unit.Information
                    }).ToListAsync()
                }
            }));
        }
Esempio n. 4
0
        public async Task <IActionResult> PutGroupsGoods(int id, GroupGoodsObjectModel ajaxGroup)
        {
            _logger.LogInformation($"Редактирование номенклатурной группы [#{id}]. Инициатор: " + _user.FullInfo);
            string msg;

            ajaxGroup.Name        = ajaxGroup.Name.Trim();
            ajaxGroup.Information = ajaxGroup.Information.Trim();

            if (!ModelState.IsValid ||
                string.IsNullOrEmpty(ajaxGroup.Name) ||
                id != ajaxGroup.Id ||
                id < 1 ||
                !await _context.GroupsGoods.AnyAsync(gGroup => gGroup.Id == id))
            {
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = "Ошибка в запросе",
                    Status = StylesMessageEnum.danger.ToString(),
                    Tag = ModelState
                }));
            }

            if (await _context.GroupsGoods.AnyAsync(gGroup => gGroup.Name.ToLower() == ajaxGroup.Name.ToLower() && gGroup.Id != id))
            {
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = "Группа с таким именем уже существует в бд. Придумайте уникальное",
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            GroupGoodsObjectModel groupDb = await _context.GroupsGoods.FindAsync(id);

            if (groupDb.isReadonly && _user.Role != AccessLevelUserRolesEnum.ROOT)
            {
                msg = $"Группа находится статусе 'read only'. Ваш уровень доступа [{_user.Role}] не позволяет удалять/редактировать подобные объекты";
                _logger.LogError(msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            groupDb.Name        = ajaxGroup.Name;
            groupDb.Information = ajaxGroup.Information;

            if (_user.Role == AccessLevelUserRolesEnum.ROOT)
            {
                groupDb.isGlobalFavorite = ajaxGroup.isGlobalFavorite;
                groupDb.isDisabled       = ajaxGroup.isDisabled;
                groupDb.isReadonly       = ajaxGroup.isReadonly;
            }

            try
            {
                await _context.SaveChangesAsync();

                msg = $"Изменения группы [#{groupDb.Id}] сохранены";
                _logger.LogInformation(msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = true,
                    Info = msg,
                    Status = StylesMessageEnum.success.ToString()
                }));
            }
            catch (Exception ex)
            {
                msg = $"Во время сохранения изменений в номенклатурной группе [#{id}] произошла ошибка: {ex.Message}{(ex.InnerException is null ? "" : ". InnerException: " + ex.InnerException.Message)}";
                _logger.LogError(ex, msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }
        }