Beispiel #1
0
        public async Task <ActionResult <ProductResponseDto> > PostProduct(ProductRequestDto productRequestDto)
        {
            var product = _mapper.Map <Product>(productRequestDto);

            _context.Products.Add(product);
            await _context.SaveChangesAsync();

            var client = _httpClientFactory.CreateClient();

            var content = new StringContent(
                JsonSerializer.Serialize(product),
                Encoding.UTF8,
                "application/json");

            try
            {
                client.PostAsync("http://localhost:6010/api/products", content);
                client.PostAsync("http://localhost:6020/api/products", content);
                client.PostAsync("http://localhost:6030/api/products", content);
                client.PostAsync("http://localhost:6040/api/products", content);
            }
            catch (Exception)
            {
            }

            return(CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product));
        }
Beispiel #2
0
 public async Task <IActionResult> UpdateProduct(ProductRequestDto productRequestDto)
 {
     return(Ok(await _mediator.Send(new UpdateProductCommand
     {
         ProductRequestDto = productRequestDto
     })));
 }
Beispiel #3
0
 public Task <ProductResponseDto> ProductInventory(ProductRequestDto request, string nameMethod)
 {
     //TODO: Michael, se realiza un Switch para que se pase el nombre del metodo que va ejecuta
     //en el servicio pero es metodo tiene que retornar un Tipo generico porque los metodos
     // post, put, delete retornar un tipo diferente.
     throw new System.NotImplementedException();
 }
        public async Task <ActionResult <int> > AddProduct(ProductRequestDto dto)
        {
            var command = _mapper.Map <AddProductCommand>(dto);

            var result = await _mediator.Send(command);

            return(Ok(result.Data));
        }
Beispiel #5
0
 public ProductUpdate(ProductRequestDto productRequestDto)
 {
     Id          = productRequestDto.Id;
     Image       = productRequestDto.Image;
     Description = productRequestDto.Description;
     Price       = productRequestDto.Price;
     Composition = productRequestDto.Composition;
     IsActive    = productRequestDto.IsActive;
 }
        public async Task <IActionResult> PostProduct(ProductRequestDto productRequestDto)
        {
            var product = _mapper.Map <Product>(productRequestDto);

            _context.Products.Add(product);
            await _context.SaveChangesAsync();

            return(new OkObjectResult(product.Id));
        }
Beispiel #7
0
        public void End2EndSerializationTest()
        {
            var dto = new ProductRequestDto
            {
                Filled   = DateTime.Now,
                FullName = "Clinique Face Cream Hybrid SPF30",
                Brend    = "Clinique",
                Product  = new ProductRequirements()
                {
                    SunscreenProduct = new List <SunscreenRequirements>()
                    {
                        new SunscreenRequirements()
                        {
                            SPF = 30
                        },
                        new SunscreenRequirements()
                        {
                            SPF = 50
                        },
                    },
                    WaterproofProduct = false
                },
                Description = new List <Description>()
                {
                    new Description
                    {
                        Price    = 599,
                        Currency = Currency.Rubles,
                        Color    = "White",
                        Amount   = "30",
                        Code     = "354720",
                        Type     = ProductsType.MassMarket
                    },
                    new Description
                    {
                        Price    = 25,
                        Currency = Currency.Rubles,
                        Amount   = "15",
                        Code     = "1643742",
                        Type     = ProductsType.Lux
                    },
                }
            };
            var tempFileName = Path.GetTempFileName();

            try
            {
                ProductDtoHelper.WriteToFile(tempFileName, dto);
                var readDto = ProductDtoHelper.LoadFromFile(tempFileName);
                Assert.AreEqual(dto.Description.Count, readDto.Description.Count);
                Assert.AreEqual(dto.Filled, readDto.Filled);
            }
            finally
            {
                File.Delete(tempFileName);
            }
        }
Beispiel #8
0
        public async Task <IActionResult> PostProduct(ProductRequestDto productRequestDto)
        {
            _logger.LogInformation($"Hit PostProduct with guid {productRequestDto.Guid}");
            var product = _mapper.Map <Product>(productRequestDto);

            _context.Products.Add(product);
            await _context.SaveChangesAsync();

            _logger.LogInformation($"SavedProduct with guid {productRequestDto.Guid}");
            return(new OkObjectResult(product.Id));
        }
        public IActionResult AddProduct(ProductRequestDto productRequestDto)
        {
            var product = _productServiceManager.AddProduct(productRequestDto);

            if (!product)
            {
                return(BadRequest());
            }

            return(Created("", null));
        }
 private void SetModelToUI(ProductRequestDto dto)
 {
     dateTimePicker1.Value = dto.Filled;
     textBox1.Text         = dto.FullName;
     textBox2.Text         = dto.Brend;
     listBox1.Items.Clear();
     foreach (var e in dto.Description)
     {
         listBox1.Items.Add(e);
     }
 }
        public async Task <IHttpActionResult> Create(ProductRequestDto requestDto)
        {
            var command = new CreateProductCommand(requestDto.Name, requestDto.Description, requestDto.Price, requestDto.DeliveryPrice);

            var result = await _productService.CreateProduct(command);

            if (!result.IsSuccess)
            {
                return(BadRequest(result.FailureReason));
            }

            return(Ok());
        }
        public async Task <IActionResult> PostProduct(ProductRequestDto productRequestDto)
        {
            if (productRequestDto.Name.EndsWith('1'))
            {
                return(new ConflictResult());
            }

            var product = _mapper.Map <Product>(productRequestDto);

            _context.Products.Add(product);
            await _context.SaveChangesAsync();

            return(new OkObjectResult(product.Id));
        }
        public async Task <ActionResult> UpdateProduct(int id, ProductRequestDto dto)
        {
            var command = _mapper.Map <UpdateProductCommand>(dto,
                                                             opt =>
            {
                opt.Items[nameof(UpdateProductCommand.Id)] = id;
            });

            var result = await _mediator.Send(command);

            if (result.IsSuccess)
            {
                return(Ok(result));
            }
            return(BadRequest(result.ErrorMessage));
        }
Beispiel #14
0
        public async Task <ActionResult <ProductResponseDto> > PostProductOutbox(ProductRequestDto productRequestDto)
        {
            var product = _mapper.Map <Product>(productRequestDto);

            _context.Products.Add(product);

            var data = JsonSerializer.Serialize(product);

            AddProductMessage(data, "http://localhost:6010/api/products", Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Post);
            AddProductMessage(data, "http://localhost:6020/api/products", Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Post);
            AddProductMessage(data, "http://localhost:6030/api/products", Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Post);
            AddProductMessage(data, "http://localhost:6040/api/products", Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Post);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product));
        }
Beispiel #15
0
        public async Task <ActionResult> PostProductSagaChoreography(ProductRequestDto productRequestDto)
        {
            var @event = new ProductCreated {
                Guid = Guid.NewGuid(), Id = 5, Name = "Twarożek"
            };
            var product = _mapper.Map <Product>(productRequestDto);

            _context.Products.Add(product);

            var data         = JsonSerializer.Serialize(product);
            var productEvent = new OutboxEvent(data, "ProductCreated");

            _context.OutboxEvents.Add(productEvent);

            await _context.SaveChangesAsync();

            return(Ok());
        }
Beispiel #16
0
        public async Task Create_Produt_Successfull_Test()
        {
            var productEntity = new ProductRequestDto
            {
                ProductId          = Guid.NewGuid().ToString(),
                ProductName        = "name fake",
                ProductDescription = " description Fake",
                CategoryId         = Guid.NewGuid().ToString()
            };

            var productRepoMock = new Mock <IProductRepository>();

            productRepoMock.Setup(x => x.Insert(It.IsAny <ProductEntity>()))
            .Returns(() =>
            {
                return(Task.FromResult(new ProductEntity {
                    ProductId = Guid.NewGuid().ToString()
                }));
            });
        }
        public void RequestProduct(ProductRequestDto productRequestDto)
        {
            Guard.ArgNotNull(productRequestDto, nameof(productRequestDto));

            IIdentity productIdentity  = productRequestDto.ProductId.ToIdentity();
            IIdentity customerIdentity = productRequestDto.CustomerId.ToIdentity();
            IIdentity companyIdentity  = productRequestDto.CompanyId.ToIdentity();

            ISpecification <ProductRequest> requestByProductAndCustomer =
                new ProductRequestByProductSpecification(productIdentity)
                .And(new ProductRequestByCustomerSpecification(customerIdentity))
                .And(new ProductRequestByCompanySpecification(companyIdentity))
                .And(new PendingRequestSpecification());

            ProductRequest existingProductRequest = requestRepository.GetEntity(requestByProductAndCustomer);

            if (existingProductRequest != null)
            {
                throw new Exception("Request already exists");
            }

            TimeInterval timeInterval = new TimeInterval(productRequestDto.StartDate, productRequestDto.EndDate);
            ISpecification <ProductRequest> overlapingRequestSpecification =
                new ProductRequestOverlapsTimeIntervalSpecification(timeInterval)
                .And(new ProductRequestByCompanySpecification(companyIdentity))
                .And(new ProductRequestByProductSpecification(productIdentity));
            IEnumerable <ProductRequest> overlapingRequests =
                requestRepository.GetEntities(overlapingRequestSpecification)
                .ToList();

            if (overlapingRequests.Any())
            {
                throw new Exception($"Request overlaps with other {overlapingRequests.Count()} requests");
            }

            ProductRequest productRequest = new ProductRequest(Identity.Create(Constants.ProductRequestsIds.Request1),
                                                               productIdentity, customerIdentity, companyIdentity, timeInterval);

            requestRepository.Add(productRequest);
        }
Beispiel #18
0
        public async Task <IActionResult> PutProduct(int id, ProductRequestDto productRequestDto)
        {
            if (id != productRequestDto.Id)
            {
                return(BadRequest());
            }

            var product = _mapper.Map <Product>(productRequestDto);

            _context.Entry(product).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException) when(!ProductExists(id))
            {
                return(NotFound());
            }

            return(NoContent());
        }
        public async Task <ActionResult> EditProduct([FromQuery] ProductIdRequestDto idRequestDto, [FromBody] ProductRequestDto productDto)
        {
            productDto.Id = idRequestDto.Id;
            await productsInteractor.EditProduct(productDto);

            return(Ok());
        }
        public async Task <ActionResult> Product(ProductRequestDto input)
        {
            #region Check Validations

            if (input.BrandOwnerdoc1 == null)
            {
                ModelState.AddModelError(nameof(ProductRequestDto.BrandOwnerdoc1),
                                         "حداقل یک مدرک مالکيت نام تجاری را وارد نمایید");
            }

            if (input.BusinessLicense == null)
            {
                ModelState.AddModelError(nameof(ProductRequestDto.BusinessLicense),
                                         "پروانه بهره برداری را وارد نمایید");
            }

            if (input.HealthLicensing1 == null)
            {
                ModelState.AddModelError(nameof(ProductRequestDto.HealthLicensing1),
                                         "حداقل یک مجوز بهداشتی و استاندارد را وارد نمایید");
            }

            if (input.CostEstimation == null)
            {
                ModelState.AddModelError(nameof(ProductRequestDto.CostEstimation), "جدول برآورد هزینه را وارد نمایید");
            }

            if (input.Commitment == null)
            {
                ModelState.AddModelError(nameof(ProductRequestDto.Commitment),
                                         "تعهد نامه ضوابط قيمت گذاری محصول را وارد نمایید");
            }

            if (input.Catalogue == null)
            {
                ModelState.AddModelError(nameof(ProductRequestDto.Catalogue), "کاتالوگ محصولات مصرفی را وارد نمایید");
            }

            if (input.Factor1 == null)
            {
                ModelState.AddModelError(nameof(ProductRequestDto.Factor1),
                                         "پيش فاکتور اول واحدهای توليدی مختلف را وارد نمایید");
            }

            if (input.OtherDocument == null)
            {
                ModelState.AddModelError(nameof(ProductRequestDto.OtherDocument),
                                         "قرارداد ظرفيت خالی یا درصد توليد قراردادی را وارد نمایید");
            }

            if (!ModelState.IsValid)
            {
                ViewBag.Result  = false;
                ViewBag.Message = "لطفا اطلاعات ضروری را وارد نمایید";
                return(View(input));
            }

            #endregion

            #region Create Request

            var request = new ProductRequest
            {
                Password         = input.Password,
                CompanyId        = input.CompanyId,
                Title            = input.Title,
                IranCode         = input.IranCode,
                UserName         = input.UserName,
                UserEmail        = input.UserEmail,
                RegistrationDate = input.RegistrationDate
            };

            #endregion

            #region Convert Uploaded Photos To Base64 And Add To Request

            await using (var ms = new MemoryStream())
            {
                input.BrandOwnerdoc1.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.BrandOwnerdoc         = Convert.ToBase64String(fileBytes);
                request.BrandOwnerdocFileName = input.BrandOwnerdoc1.FileName;
            }

            if (input.BrandOwnerdoc2 != null)
            {
                await using var ms = new MemoryStream();
                input.BrandOwnerdoc2.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.BrandOwnerdoc         = $"{request.BrandOwnerdoc}|{Convert.ToBase64String(fileBytes)}";
                request.BrandOwnerdocFileName = $"{request.BrandOwnerdocFileName}|{input.BrandOwnerdoc2.FileName}";
            }

            if (input.BrandOwnerdoc3 != null)
            {
                await using var ms = new MemoryStream();
                input.BrandOwnerdoc3.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.BrandOwnerdoc         = $"{request.BrandOwnerdoc}|{Convert.ToBase64String(fileBytes)}";
                request.BrandOwnerdocFileName = $"{request.BrandOwnerdocFileName}|{input.BrandOwnerdoc3.FileName}";
            }

            await using (var ms = new MemoryStream())
            {
                input.BusinessLicense.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.BusinessLicense         = Convert.ToBase64String(fileBytes);
                request.BusinessLicenseFileName = input.BusinessLicense.FileName;
            }

            await using (var ms = new MemoryStream())
            {
                input.HealthLicensing1.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.HealthLicensing         = Convert.ToBase64String(fileBytes);
                request.HealthLicensingFileName = input.HealthLicensing1.FileName;
            }

            if (input.HealthLicensing2 != null)
            {
                await using var ms = new MemoryStream();
                input.HealthLicensing2.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.HealthLicensing         = $"{request.HealthLicensing}|{Convert.ToBase64String(fileBytes)}";
                request.HealthLicensingFileName =
                    $"{request.HealthLicensingFileName}|{input.HealthLicensing2.FileName}";
            }

            if (input.HealthLicensing3 != null)
            {
                await using var ms = new MemoryStream();
                input.HealthLicensing3.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.HealthLicensing         = $"{request.HealthLicensing}|{Convert.ToBase64String(fileBytes)}";
                request.HealthLicensingFileName =
                    $"{request.HealthLicensingFileName}|{input.HealthLicensing3.FileName}";
            }

            await using (var ms = new MemoryStream())
            {
                input.CostEstimation.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.CostEstimation         = Convert.ToBase64String(fileBytes);
                request.CostEstimationFileName = input.CostEstimation.FileName;
            }

            await using (var ms = new MemoryStream())
            {
                input.Commitment.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.Commitment         = Convert.ToBase64String(fileBytes);
                request.CommitmentFileName = input.Commitment.FileName;
            }

            await using (var ms = new MemoryStream())
            {
                input.Catalogue.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.Catalogue         = Convert.ToBase64String(fileBytes);
                request.CatalogueFileName = input.Catalogue.FileName;
            }

            await using (var ms = new MemoryStream())
            {
                input.Factor1.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.Factor         = Convert.ToBase64String(fileBytes);
                request.FactorFileName = input.Factor1.FileName;
            }

            if (input.Factor2 != null)
            {
                await using var ms = new MemoryStream();
                input.Factor2.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.Factor         = $"{request.Factor}|{Convert.ToBase64String(fileBytes)}";
                request.FactorFileName = $"{request.FactorFileName}|{input.Factor2.FileName}";
            }

            await using (var ms = new MemoryStream())
            {
                input.OtherDocument.CopyTo(ms);
                var fileBytes = ms.ToArray();
                request.OtherDocument         = Convert.ToBase64String(fileBytes);
                request.OtherDocumentFileName = input.OtherDocument.FileName;
            }

            #endregion

            #region Call Webservice And Return Result

            var result = await _asnafProductsApiClient.ProductAsync(request);

            if (result.Status == 1)
            {
                ViewBag.Result  = true;
                ViewBag.Message = $"درخواست شما با موفقیت ثبت شد، شماره پیگیری {result.RequestId}";
            }
            else
            {
                ViewBag.Result  = false;
                ViewBag.Message = result.Message;
            }

            return(View(input));

            #endregion
        }
Beispiel #21
0
 public Task <ProductResponseDto> Create(ProductRequestDto request)
 {
     throw new System.NotImplementedException();
 }
Beispiel #22
0
 public bool Update(ProductRequestDto request)
 {
     throw new System.NotImplementedException();
 }
        public IActionResult PostProductRequest([FromBody] ProductRequestDto productRequestDto)
        {
            productRequestService.RequestProduct(productRequestDto);

            return(Ok());
        }
Beispiel #24
0
        public async Task <ActionResult <Pagination <ProductResponseDto> > > GetProducts([FromQuery] ProductRequestDto productRequestDto)
        {
            var productRepositoryObject = new ProductRepositoryObject
            {
                BrandId         = productRequestDto?.BrandId,
                SortBy          = productRequestDto?.SortBy,
                SortOrder       = productRequestDto?.SortOrder,
                TypeId          = productRequestDto?.TypeId,
                Skip            = productRequestDto?.PageIndex ?? 1,
                Take            = productRequestDto?.PageSize ?? 50,
                Search          = productRequestDto.Search,
                IsPagingEnabled = true
            };

            var products = await _productRepository.GetAllAsync(productRepositoryObject);

            var totalItems = await _productRepository.CountAsync(productRepositoryObject);

            var data       = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductResponseDto> >(products);
            var pagination = new Pagination <ProductResponseDto>(productRepositoryObject.Skip, productRepositoryObject.Take, totalItems, data);

            return(Ok(pagination));
        }
Beispiel #25
0
 public async Task EditProduct(ProductRequestDto productDto)
 {
     await productRepository.EditProduct(new ProductUpdate(productDto));
 }