예제 #1
0
        public IActionResult GetProudctList(RequestProduct request)
        {
            var search = PredicateBuilder.New <Products>();

            if (request.IsPromotion == true)
            {
                search.And(r => r.IsPromotion == request.IsPromotion);
            }

            search.And(r => r.PublishDate <= DateTime.Now && r.DownDate >= DateTime.Now);

            var products = _context.Products.Where(search);

            if (products.Any())
            {
                var result = products.Select(r => new ProductListView()
                {
                    ProductID     = r.ID.ToString(),
                    ProductName   = r.Name,
                    Link          = "/Product/Detail?id=" + r.ID,
                    ImageUrl      = r.ImgUrl,
                    OriganalPrice = r.Price,
                    SalePrice     = r.SalePrice,
                    Weight        = r.Weight
                });

                return(Ok(result));
            }
            else
            {
                return(StatusCode(Status400BadRequest, new ResponseMessage {
                    Message = "查無商品資訊"
                }));
            }
        }
예제 #2
0
 public JsonResult SaveRequestProduct(RequestProduct model)
 {
     model.CreatedDate = DateTime.Now;
     db.RequestProducts.Add(model);
     db.SaveChanges();
     return(Json("Sản phẩm yêu cầu của bạn đã được ghi nhận, chúng tôi sẽ liên hệ lại bạn ngay khi có sản phẩm.", JsonRequestBehavior.AllowGet));
 }
 private static void AssertSuccessfulSave(RequestProduct requestProduct, HttpStatusCode statusCode, Product responseProduct)
 {
     Assert.AreEqual(HttpStatusCode.Created, statusCode);
     Assert.AreEqual(requestProduct.Brand, responseProduct.Brand);
     Assert.AreEqual(requestProduct.Model, responseProduct.Model);
     Assert.AreEqual(requestProduct.Description, responseProduct.Description);
 }
예제 #4
0
        // завершение заявки (статус и дата окончания)
        public void finishOrder(int recId, DateTime reception)
        {
            Request element = context.Requests.FirstOrDefault(rec => rec.Id == recId);

            element.ReceiptMark   = true;
            element.DateReception = reception;
            context.SaveChanges();

            for (int i = 1; i < 6; i++)
            {
                try
                {
                    RequestProduct elementPr = context.RequestProducts.FirstOrDefault(rec => rec.RequestId == recId && rec.Status == "Заказ передан поставщику");
                    if (elementPr != null)
                    {
                        elementPr.Status = "Завершен";
                        context.SaveChanges();
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }

            int    user    = getUserIdForRequest(recId);
            string address = findEmail(user);

            email.SendEmail(address, "Завершение заказа", "Доставка заказа № " + recId + " выполнена");
        }
예제 #5
0
 // добавление товаров в заявку
 public void addProdToRequest(RequestProduct model)
 {
     using (var transaction = context.Database.BeginTransaction())
     {
         try
         {
             RequestProduct element = new RequestProduct
             {
                 Id         = model.Id,
                 RequestId  = model.RequestId,
                 ProductId  = model.ProductId,
                 Status     = model.Status,
                 Amount     = model.Amount,
                 ProviderId = model.ProviderId
             };
             context.RequestProducts.Add(element);
             context.SaveChanges();
             transaction.Commit();
         }
         catch (Exception)
         {
             transaction.Rollback();
             throw;
         }
     }
 }
        public async Task PostIncompleteProduct_ReturnsBadRequest()
        {
            var requestProduct = new RequestProduct();

            var(statusCode, _) = await SaveProduct(requestProduct, null, Post);

            Assert.AreEqual(HttpStatusCode.BadRequest, statusCode);
        }
 public override async Task <ReturnProduct> GetProduceprice(RequestProduct request, ServerCallContext context)
 {
     return(await Task.FromResult <ReturnProduct>(new ReturnProduct
     {
         ProductId = request.ProductId,
         Price = 500
     }));
 }
예제 #8
0
 public override Task <ResponseProduct> SendProduct(RequestProduct request, ServerCallContext context)
 {
     Models.Product p = _mapper.Map <Models.Product>(request);
     _repository.Create(p);
     return(Task.FromResult(new ResponseProduct {
         Message = "Product added with id " + p.Id
     }));
 }
예제 #9
0
        public IActionResult Post(RequestProduct request)
        {
            var product = request.data.attributes;

            product.created_at = timestamp;
            product.updated_at = timestamp;
            _context.products.Add(product);
            _context.SaveChanges();
            return(Ok(new { message = "success add data", status = "true", data = product }));
        }
예제 #10
0
        public async Task <IActionResult> Post([FromBody] Models.Product product)
        {
            using GrpcChannel channel = GrpcChannel.ForAddress("https://localhost:5001");
            var client = new Product.ProductClient(channel);
            var r      = new RequestProduct {
                Title = product.Title, Price = (double)product.Price
            };
            ResponseProduct response = await client.SendProductAsync(r);

            return(Ok(response));
        }
예제 #11
0
파일: Citizen.cs 프로젝트: TimonYoon/Dev
        /// <summary> 주민 요구 사항 (빵 같은 것들) 설정 </summary>
        void InitRequest()
        {
            //requestedProductID = "food_001";
            //if (Random.Range(0, 100) < 5)
            //    requestedProductID = "food_002";

            List <RequestProduct> rpList = new List <RequestProduct>();
            RequestProduct        rp     = new RequestProduct("food_001", 10000); //빵

            rpList.Add(rp);
            if (User.Instance.userLevel >= 2 /*5*/)
            {
                int            w   = Mathf.Min(1000 * (User.Instance.userLevel - 1 /*4*/), 10000);
                RequestProduct rp2 = new RequestProduct("food_002", w); //생선
                rpList.Add(rp2);
            }

            int totalWeight = rpList.Sum(x => x.weight);

            float r = Random.Range(0f, totalWeight);

            float sum = 0f;

            int a = 0;

            for (int i = 0; i < rpList.Count; i++)
            {
                if (r > sum && r <= sum + rpList[i].weight)
                {
                    a = i;
                    break;
                }
                sum += rpList[i].weight;
            }

            requestedProductID = rpList[a].productID;

            Item productionData = ProductManager.Instance.productList.Find(x => x.id == requestedProductID);


            requestAmount = 3d * System.Math.Pow(1.25d, User.Instance.userLevel - 1);

            if (requestAmount < 1000)
            {
                requestAmount = (int)requestAmount;
            }

            //말풍선에 아이콘 설정
            TerritoryManager.Instance.ChangeMaterialImage(imageRequestIcon, productionData.image);
        }
    public Task <ActionResult> Update([FromBody] RequestProduct newObj)
    {
        String serviceName = newObj.GetType().Name;

        // TODO : validar se entity.getState() é um State com antecessor e precedente validos.
        return(RequestFilter.GetObject <RequestProduct>(this.User.Identity, this.Request, this.entityManager, serviceName).ContinueWith <ActionResult>(taskOldObj => {
            return RequestFilter.ProcessUpdate(this.User.Identity, this.Request, this.entityManager, serviceName, newObj).ContinueWith <ActionResult>(taskResponse => {
                ActionResult response = taskResponse.Result;


                return response;
            }).Result;
        }));
    }
        public async Task PostThenPutProduct_UpdateSucceeds()
        {
            var requestProduct = new RequestProduct {
                Brand = "Dell", Model = "Xps", Description = "Laptop from Dell"
            };

            var(statusCode, product) = await SaveProduct(requestProduct, null, Post);

            AssertSuccessfulSave(requestProduct, statusCode, product);

            (statusCode, product) = await SaveProduct(requestProduct, product.Id, Put);

            Assert.AreEqual(HttpStatusCode.NoContent, statusCode);
            Assert.IsNull(product);
        }
예제 #14
0
        // назначение поставщиков заявкам
        public List <RequestProductViewModel> FindProviders()
        {
            List <RequestProductViewModel> result = context.RequestProducts.Where(rec => rec.ProviderId == 1).Select(rec => new
                                                                                                                     RequestProductViewModel
            {
                Id         = rec.Id,
                RequestId  = rec.RequestId,
                ProductId  = rec.ProductId,
                Status     = rec.Status,
                Amount     = rec.Amount,
                ProviderId = rec.ProviderId
            })
                                                    .ToList();

            for (int i = 0; i < result.Count; i++)
            {
                int     recuestId = result[i].RequestId;
                Request el        = context.Requests.FirstOrDefault(rec => rec.Id == recuestId);
                int     Prioritet = el.Prioritet;

                int prodId     = result[i].ProductId;
                int amount     = result[i].Amount;
                int providerId = 1;

                if (Prioritet == 0)
                {
                    providerId = FindProviderWithMinPrice(prodId, amount);
                }
                else
                {
                    providerId = FindProviderWithBestRating(prodId, amount);
                }
                //result[i].ProviderId = providerId;
                RequestProduct element = getById(result[i].Id);
                element.ProviderId = providerId;
                element.Status     = "Заказ передан поставщику";
                decimal totalPrice = changeInStockAmount(prodId, providerId, amount);
                context.SaveChanges();
                int    user    = getUserIdForRequest(result[i].RequestId);
                string address = findEmail(user);
                email.SendEmail(address, "Изменение статуса заказа", "Доставка " + productController.ProductNameById(result[i].ProductId) + " передана " + providerController.ProviderNameById(providerId) + ". Стоимость доставки составила " + totalPrice);
            }

            context.SaveChanges();
            return(result);
        }
        public async Task PostProduct_CanFindPostedProductByGetAll()
        {
            var requestProduct = new RequestProduct {
                Brand = "Apple", Model = "MacBook Pro", Description = "Laptop from Apple"
            };

            var(statusCode, product) = await SaveProduct(requestProduct, null, Post);

            AssertSuccessfulSave(requestProduct, statusCode, product);

            var response = await Get();

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            var products = await ReadContent <List <Product> >(response);

            var savedProduct = products.Single(p => p.Id == product.Id);

            Assert.IsNotNull(savedProduct);
        }
        public async Task PostProduct_ThenCanDeletePostedProduct()
        {
            var requestProduct = new RequestProduct {
                Brand = "Samsung", Model = "Fridge", Description = "Fridge from Samsung"
            };

            var(statusCode, product) = await SaveProduct(requestProduct, null, Post);

            AssertSuccessfulSave(requestProduct, statusCode, product);

            var response = await Get(product.Id);

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            response = await Client.DeleteAsync($"{ProductApi}/{product.Id}");

            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);

            response = await Get(product.Id);

            Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);
        }
예제 #17
0
        public IActionResult UpdatebyId(int id, RequestProduct request)
        {
            var products = request.data.attributes;

            try
            {
                var result = _context.products.First(x => x.id == id);
                result.name       = products.name;
                result.price      = products.price;
                result.updated_at = timestamp;
                _context.SaveChanges();
                return(Ok(new
                {
                    message = "success update data",
                    status = "true",
                    data = result
                }));
            }
            catch (Exception)
            {
                return(NotFound());
            }
        }
    public Task <ActionResult> Create([FromBody] RequestProduct obj)
    {
        String serviceName = CaseConvert.UnderscoreToCamel(obj.GetType().Name, false);

        return(RequestFilter.ProcessCreate <RequestProduct>(this.User.Identity, this.entityManager, serviceName, obj));
    }
예제 #19
0
        // получение товаров в заявке по id
        public RequestProduct getById(int recId)
        {
            RequestProduct element = context.RequestProducts.FirstOrDefault(rec => rec.Id == recId);

            return(element);
        }
        private async Task <(HttpStatusCode StatusCode, Product Product)> SaveProduct(RequestProduct requestProduct, string productId, Func <string, HttpContent, Task <HttpResponseMessage> > saveFunc)
        {
            var stringContent = BuildStringContent(requestProduct);
            var response      = await saveFunc(productId, stringContent);

            var responseProduct = await ReadContent <Product>(response);

            return(response.StatusCode, responseProduct);
        }