Ejemplo n.º 1
0
        /// <summary>
        /// Maps Name, OrganizationId
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        /// <exception cref="NullReferenceException"></exception>
        public static DALChangeDTO FromBLL(BLLChangeDTO dto)
        {
            if (dto == null)
            {
                throw new NullReferenceException("Can't map, BLLChangeDTO is null");
            }

            return(new DALChangeDTO()
            {
                Name = dto.Name,
                OrganizationId = dto.OrganizationId
            });
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Maps Id, Name, Price
 /// </summary>
 /// <param name="dto"></param>
 /// <returns></returns>
 /// <exception cref="NullReferenceException"></exception>
 public static ChangeDTO FromBLL(BLLChangeDTO dto)
 {
     if (dto == null)
     {
         throw new NullReferenceException("Can't map, BLLChangeDTO is null");
     }
     return(new ChangeDTO()
     {
         Name = dto.Name,
         Price = dto.CurrentPrice,
         ChangeId = dto.Id
     });
 }
Ejemplo n.º 3
0
        public async Task <bool> EditChange(BLLChangeDTO changeDto)
        {
            var organization = await Uow.Organizations.FindWithCategoriesAsync(changeDto.OrganizationId);

            if (organization?.Categories == null || organization.Categories.Count == 0)
            {
                return(false);
            }

            var organizationCategoryIds = organization.Categories.Select(dto => dto.Id).ToList();

            foreach (var category in changeDto.Categories)
            {
                if (!organizationCategoryIds.Contains(category.Id))
                {
                    return(false);
                }
            }

            //1.Edit product entity
            var change = await Uow.Changes.EditAsync(ChangeMapper.FromBLL2(changeDto));

            if (change == null)
            {
                return(false);
            }

            //2. Edit product categories
            await Uow.ChangesInCategories.RemoveByChangeId(change.Id);

            foreach (var category in changeDto.Categories)
            {
                await Uow.ChangesInCategories.AddAsync(change.Id, category.Id);
            }

            //3. Add price
            var priceDTO = new DALPriceDTO()
            {
                Value     = changeDto.CurrentPrice,
                ChangeId  = change.Id,
                ValidFrom = DateTime.Now,
                ValidTo   = DateTime.MaxValue,
            };
            await Uow.Prices.EditAsync(priceDTO);

            await Uow.SaveChangesAsync();

            return(true);
        }
Ejemplo n.º 4
0
        public async Task <bool> AddChangeAsync(BLLChangeDTO changeDto)
        {
            var organization = await Uow.Organizations.FindWithCategoriesAsync(changeDto.OrganizationId);

            if (organization?.Categories == null || organization.Categories.Count == 0)
            {
                return(false);
            }

            var organizationCategoryIds = organization.Categories.Select(dto => dto.Id).ToList();

            foreach (var category in changeDto.Categories)
            {
                //Make sure select categories belong to selected Organization
                if (!organizationCategoryIds.Contains(category.Id))
                {
                    return(false);
                }
            }

            //1.Add change
            var change = await Uow.Changes.AddAsync(ChangeMapper.FromBLL(changeDto));

            //2. Add change categories
            foreach (var category in changeDto.Categories)
            {
                await Uow.ChangesInCategories.AddAsync(change.Id, category.Id);
            }

            //3. Add price
            var priceDTO = new DALPriceDTO()
            {
                Value     = changeDto.CurrentPrice,
                ChangeId  = change.Id,
                ValidFrom = DateTime.MinValue,
                ValidTo   = DateTime.MaxValue,
            };
            await Uow.Prices.AddAsync(priceDTO);

            await Uow.SaveChangesAsync();

            return(true);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Create(CreateChangeViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var changeDto = new BLLChangeDTO()
                {
                    OrganizationId = vm.OrganizationId,
                    Name           = vm.ChangeName,
                    CurrentPrice   = vm.Price,
                    Categories     = vm.SelectedCategories.Select(id => new BLLCategoryMinDTO(id)).ToList()
                };

                var result = await _bll.ChangeService.AddChangeAsync(changeDto);

                if (result == false)
                {
                    return(BadRequest("Something went wrong while adding change"));
                }
            }

            return(RedirectToAction("Organization", "Dashboard", new { Id = vm.OrganizationId }));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> Edit(EditChangeViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var input = new BLLChangeDTO()
                {
                    Id             = vm.ChangeId,
                    OrganizationId = vm.OrganizationId,
                    CurrentPrice   = vm.Price,
                    Name           = vm.ChangeName,
                    Categories     = vm.SelectedCategories.Select(i => new BLLCategoryMinDTO(i)).ToList()
                };

                var result = await _bll.ChangeService.EditChange(input);

                if (result == false)
                {
                    return(BadRequest());
                }
                return(RedirectToAction("Organization", "Dashboard", new { Id = vm.OrganizationId }));
            }
            return(BadRequest());
        }