Esempio n. 1
0
        public SupplyResponse Put(string id, [FromBody] VirtualItem item)
        {
            if (string.IsNullOrWhiteSpace(id) || string.IsNullOrWhiteSpace(item.VirtualItemName) ||
                string.IsNullOrWhiteSpace(item.VirtualItemId))
            {
                return(SupplyResponse.RequiredFieldEmpty());
            }

            var entity = _dbContext.VirtualItem.AsNoTracking().SingleOrDefault(p => p.VirtualItemId.Equals(id));

            if (entity == null)
            {
                return(Post(item));
            }

            if (entity.VirtualItemId != item.VirtualItemId &&
                _dbContext.VirtualItem.SingleOrDefault(p => p.VirtualItemId == item.VirtualItemId) != null)
            {
                return(SupplyResponse.DuplicateEntry("virtual item", item.VirtualItemId));
            }

            item.Id = entity.Id;
            var entry = _dbContext.Attach(item);

            //var entry = _dbContext.Entry(entity);
            //entry.CurrentValues.SetValues(item);
            entry.State = EntityState.Modified;
            _dbContext.SaveChanges();
            return(Get(item.VirtualItemId));
        }
        public SupplyResponse Put(int id)
        {
            var order = _dbContext.DespatchInstruction.Include(p => p.Request)
                        .ThenInclude(p => p.RequestItem).ThenInclude(p => p.VirtualItem).Include(p => p.Request)
                        .ThenInclude(p => p.Restaurant)
                        .SingleOrDefault(p => p.DespatchInstructionId == id);

            if (order == null)
            {
                return(SupplyResponse.NotFound("Purchase Order", id + ""));
            }

            order.Request.RequestStatus = RequestStatus.Delivering;

            _dbContext.SaveChanges();

            order.DespatchInstructionStatus = 1;

            _dbContext.SaveChanges();

            _dbContext.DeliveryNote.Add(new DeliveryNote
            {
                CreateTime = DateTime.Now,
                RequestId  = order.RequestId
            });

            _dbContext.SaveChanges();

            return(Get(id));
        }
Esempio n. 3
0
        public SupplyResponse Put(int id, [FromBody] ICollection <ItemRequest> itemRequest)
        {
            var request = _dbContext.Request.Include(p => p.RequestItem).SingleOrDefault(p => p.RequestId == id);

            if (request == null)
            {
                return(SupplyResponse.NotFound("Request", id + ""));
            }

            if (itemRequest == null || !itemRequest.Any())
            {
                return(SupplyResponse.BadRequest("Request Item cannot be empty."));
            }

            ICollection <RequestItem> requestItems;

            if ((requestItems = request.RequestItem) != null)
            {
                foreach (var items in requestItems)
                {
                    _dbContext.Remove(items);
                }
            }

            _dbContext.SaveChanges();

            var itemMap = new Dictionary <int, int>();

            foreach (var item in itemRequest)
            {
                var virtualItem =
                    _dbContext.VirtualItem.SingleOrDefault(p => p.VirtualItemId.Equals(item.VirtualItemId));
                if (virtualItem == null)
                {
                    return(SupplyResponse.NotFound("virtual item", item.VirtualItemId));
                }
                if (itemMap.ContainsKey(virtualItem.Id))
                {
                    itemMap[virtualItem.Id] += item.Quantity;
                }
                else
                {
                    itemMap.Add(virtualItem.Id, item.Quantity);
                }
            }

            foreach (var(itemId, qty) in itemMap)
            {
                var requestItem = new RequestItem
                {
                    RequestId     = request.RequestId,
                    VirtualItemId = itemId,
                    Quantity      = qty
                };
                _dbContext.RequestItem.Add(requestItem);
                _dbContext.SaveChanges();
            }

            return(Get(request.RequestId));
        }
Esempio n. 4
0
        public SupplyResponse CreateToken([FromBody] LoginRequest login)
        {
            var response = SupplyResponse.Fail("Unauthorize", "Your are not the user in the system.");
            var user     = Authenticate(login);

            if (user != null)
            {
                var expiry      = DateTime.Now.AddDays(1);
                var tokenString = BuildToken(expiry, user);

                var     restaurantManager = user.RestaurantManager;
                dynamic workplace         = null;
                if (restaurantManager != null)
                {
                    workplace = new
                    {
                        restaurantId = restaurantManager.RestaurantId,
                        stockId      = restaurantManager.Restaurant.StockId
                    };
                }


                response = SupplyResponse.Ok(new
                {
                    token    = tokenString,
                    userType = user.UserType,
                    expiry,
                    user,
                    workplace
                });
            }

            return(response);
        }
        public SupplyResponse Get(int id)
        {
            var category = _dbContext.Category.Include(a => a.CategoryItems).ThenInclude(a => a.VirtualItem).SingleOrDefault(p => p.CategoryId == id);

            if (category == null)
            {
                return(SupplyResponse.NotFound("category", id + ""));
            }


            var categoryItemResponse = new CategoryItemResponse
            {
                Category      = category,
                VirtualItemId = new List <string>()
            };

            if (category.CategoryItems != null)
            {
                foreach (var categoryItem in category.CategoryItems)
                {
                    categoryItemResponse.VirtualItemId.Add(categoryItem.VirtualItem.VirtualItemId);
                }
                category.CategoryItems = null;
            }


            return(SupplyResponse.Ok(categoryItemResponse));
        }
        public SupplyResponse AddToCategory(int id, [FromBody] IdRequest idRequest)
        {
            var category = _dbContext.Category.SingleOrDefault(p => p.CategoryId == id);

            var vItm = _dbContext.VirtualItem.SingleOrDefault(p => p.VirtualItemId == idRequest.Id);

            if (category == null)
            {
                return(SupplyResponse.NotFound("category", id + ""));
            }
            if (vItm == null)
            {
                return(SupplyResponse.NotFound("virtual item", idRequest.Id + ""));
            }

            var cItem = _dbContext.CategoryItem.SingleOrDefault(p =>
                                                                p.CategoryId == category.CategoryId && p.VirtualItem.VirtualItemId == vItm.VirtualItemId);

            if (cItem != null)
            {
                return(SupplyResponse.DuplicateEntry("category item",
                                                     $"\"{cItem.VirtualItemId} in {cItem.CategoryId}\""));
            }

            var cateItm = new CategoryItem
            {
                CategoryId    = category.CategoryId,
                VirtualItemId = vItm.Id
            };

            _dbContext.CategoryItem.Add(cateItm);
            _dbContext.SaveChanges();
            return(Get(category.CategoryId));
        }
Esempio n. 7
0
        public SupplyResponse Get()
        {
            var currentUser = HttpContext.User;
            var dbUser      =
                _dbContext.User.Include(p => p.RestaurantManager).ThenInclude(p => p.Restaurant)
                .SingleOrDefault(p => currentUser.FindFirst(ClaimTypes.Name).Value.Equals(p.UserName));

            if (dbUser == null)
            {
                return(SupplyResponse.Fail("Unauthorize", "Your are not the user in the system."));
            }
            var restaurantManager = dbUser.RestaurantManager;

            if (restaurantManager == null)
            {
                return(SupplyResponse.Fail("Unauthorize", "Your are not the restaurant manager."));
            }
            var restaurantId = restaurantManager.Restaurant.RestaurantId;
            var requests     = _dbContext.Request.Include(p => p.User).Include(p => p.RequestItem)
                               .ThenInclude(p => p.VirtualItem).Include(p => p.RequestMap)
                               .Where(p => p.RestaurantId == restaurantId)
                               .Select(p => p);


            foreach (var request in requests)
            {
                foreach (var requestItem in request.RequestItem)
                {
                    requestItem.VirtualItemName      = requestItem.VirtualItem.VirtualItemName;
                    requestItem.RequestVirtualItemId = requestItem.VirtualItem.VirtualItemId;
                }
            }

            return(SupplyResponse.Ok(requests));
        }
        public SupplyResponse Get()
        {
            var categories = _dbContext.Category.Include(a => a.CategoryItems).ThenInclude(a => a.VirtualItem).Select(p => p);

            var categoryItemResponses = new List <CategoryItemResponse>();

            foreach (var category in categories)
            {
                var categoryItemResponse = new CategoryItemResponse
                {
                    Category      = category,
                    VirtualItemId = new List <string>()
                };

                if (category.CategoryItems != null)
                {
                    foreach (var categoryItem in category.CategoryItems)
                    {
                        categoryItemResponse.VirtualItemId.Add(categoryItem.VirtualItem.VirtualItemId);
                    }
                    category.CategoryItems = null;
                }

                categoryItemResponses.Add(categoryItemResponse);
            }

            return(SupplyResponse.Ok(categoryItemResponses));
        }
        public SupplyResponse Post(string id, [FromBody] IdRequest idRequest)
        {
            if (idRequest == null || string.IsNullOrWhiteSpace(idRequest.Id))
            {
                return(SupplyResponse.RequiredFieldEmpty());
            }
            var vItem = _dbContext.VirtualItem.SingleOrDefault(p => p.VirtualItemId == idRequest.Id);
            var item  = _dbContext.Item.SingleOrDefault(p => p.SupplierItemId == id);

            if (item == null)
            {
                return(SupplyResponse.NotFound("item", id));
            }
            if (vItem == null)
            {
                return(SupplyResponse.NotFound("virtual item", idRequest.Id));
            }

            if (_dbContext.VirtualIdMap.SingleOrDefault(p =>
                                                        p.ItemId == item.Id && p.VirtualItemId == vItem.Id) != null)
            {
                return(SupplyResponse.DuplicateEntry("virtual map", $"{id}<->{idRequest.Id}"));
            }

            _dbContext.VirtualIdMap.Add(new VirtualIdMap {
                ItemId = item.Id, VirtualItemId = vItem.Id
            });
            _dbContext.SaveChanges();
            return(SupplyResponse.Ok());
        }
        public SupplyResponse Get(int id)
        {
            var restaurant = _dbContext.Restaurant.Include(p => p.RestaurantManager)
                             .SingleOrDefault(p => p.RestaurantId == id);

            return(SupplyResponse.Ok(restaurant));
        }
Esempio n. 11
0
        public SupplyResponse Post([FromBody] UserRequest user)
        {
            if (string.IsNullOrWhiteSpace(user.Name) || string.IsNullOrWhiteSpace(user.UserName) ||
                string.IsNullOrWhiteSpace(user.Password))
            {
                return(SupplyResponse.RequiredFieldEmpty());
            }
            var entity = _dbContext.User.AsNoTracking().SingleOrDefault(p => p.UserName == user.UserName);

            if (entity != null)
            {
                return(SupplyResponse.DuplicateEntry("user", user.UserName));
            }
            var dbUser = new User
            {
                Name     = user.Name,
                UserName = user.UserName,
                Password = HashUtilities.HashPassword(user.Password),
                UserType = user.UserType
            };

            _dbContext.User.Add(dbUser);
            _dbContext.SaveChanges();
            return(Get(dbUser.UserId));
        }
Esempio n. 12
0
        public SupplyResponse Get()
        {
            var currentUser = HttpContext.User;
            var dbUser      =
                _dbContext.User.Include(p => p.RestaurantManager).ThenInclude(p => p.Restaurant)
                .SingleOrDefault(p => currentUser.FindFirst(ClaimTypes.Name).Value.Equals(p.UserName));

            if (dbUser == null)
            {
                return(SupplyResponse.Fail("Unauthorize", "Your are not the user in the system."));
            }

            if (dbUser.UserType == UserType.RestaurantManager)
            {
                var restaurantManager = dbUser.RestaurantManager;
                if (restaurantManager == null)
                {
                    return(SupplyResponse.Fail("Unauthorize", "Your are not the restaurant manager of any restaurant."));
                }
                return(SupplyResponse.Ok(new { stock = restaurantManager.Restaurant.StockId }));
            }

            var id = _dbContext.Stock.FirstOrDefault(p => p.StockType == StockType.WarehouseStock).StockId;

            return(SupplyResponse.Ok(new { stock = id }));
        }
Esempio n. 13
0
        public SupplyResponse Put(int id, [FromBody] UserRequest user)
        {
            var dbUser = _dbContext.User.SingleOrDefault(p => p.UserId == id);

            if (dbUser == null)
            {
                return(SupplyResponse.NotFound("user", id + ""));
            }
            if (string.IsNullOrWhiteSpace(user.UserName))
            {
                return(SupplyResponse.BadRequest("Required Field is Empty"));
            }

            dbUser.Name     = user.Name;
            dbUser.UserName = user.UserName;
            dbUser.UserType = user.UserType;

            var oldPw = dbUser.Password;

            user.Password = string.IsNullOrWhiteSpace(user.Password)
                ? oldPw
                : HashUtilities.HashPassword(user.Password);

            _dbContext.SaveChanges();
            return(Get(id));
        }
        public SupplyResponse Get(int id)
        {
            var stock = _dbContext.Stock.Include(a => a.StockItem).ThenInclude(a => a.VirtualItem)
                        .SingleOrDefault(p => p.StockId == id);

            return(SupplyResponse.Ok(stock));
        }
Esempio n. 15
0
        public SupplyResponse Post([FromBody] Announcement data)
        {
            if (string.IsNullOrWhiteSpace(data.Message) || string.IsNullOrWhiteSpace(data.Title) ||
                data.Target == null || !data.Target.Any())
            {
                return(SupplyResponse.RequiredFieldEmpty());
            }

            if (data.RemovalTime < DateTime.Now)
            {
                return(SupplyResponse.BadRequest("Removal Time should be a future date"));
            }

            _dbContext.DataCache.Add(new DataCache
            {
                CacheType = "Announcement",
                CacheTime = DateTime.Now,
                Content   = JsonConvert.SerializeObject(data, new JsonSerializerSettings
                {
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                    NullValueHandling     = NullValueHandling.Ignore,
                    ContractResolver      = new CamelCasePropertyNamesContractResolver()
                }),
                RemovalTime = data.RemovalTime
            });
            _dbContext.SaveChanges();
            _hubContext.Clients.All.SendAsync("ReceiveAnnouncement", data.Target, "A new announcement broadcasted");
            return(Get());
        }
 public SupplyResponse Delete(int id)
 {
     var entity = _dbContext.Restaurant.SingleOrDefault(p => p.RestaurantId == id);
     if (entity == null) return SupplyResponse.NotFound("restaurant", id + "");
     _dbContext.Remove(entity);
     _dbContext.SaveChanges();
     return SupplyResponse.Ok();
 }
Esempio n. 17
0
        public SupplyResponse Get()
        {
            var orders = _dbContext.DeliveryNote.Include(p => p.Request)
                         .ThenInclude(p => p.RequestItem).ThenInclude(p => p.VirtualItem).Include(p => p.Request)
                         .ThenInclude(p => p.Restaurant).Select(p => p);

            return(SupplyResponse.Ok(orders));
        }
Esempio n. 18
0
        public SupplyResponse Delete(int id)
        {
            var datas = _dbContext.DataCache.SingleOrDefault(p => p.DataCacheId == id);

            _dbContext.DataCache.Remove(datas);
            _dbContext.SaveChanges();
            return(SupplyResponse.Ok());
        }
        public SupplyResponse Get()
        {
            var orders = _dbContext.BlanketRelease.Include(p => p.Agreement).ThenInclude(p => p.Supplier).Include(p => p.Request)
                         .ThenInclude(p => p.RequestItem).Include(p => p.BlanketReleaseLine).ThenInclude(p => p.Item).Include(p => p.Request)
                         .ThenInclude(p => p.Restaurant)
                         .Select(p => p);

            return(SupplyResponse.Ok(orders));
        }
Esempio n. 20
0
        public SupplyResponse Get()
        {
            var orders = _dbContext.ScheduleRelease.Include(p => p.Agreement)
                         .ThenInclude(p => p.PlannedPurchaseAgreementDetails).Include(p => p.Agreement)
                         .ThenInclude(p => p.Supplier).Include(p => p.Agreement)
                         .ThenInclude(p => p.PlannedPurchaseAgreementLines).ThenInclude(p => p.Item).Select(p => p);

            return(SupplyResponse.Ok(orders));
        }
Esempio n. 21
0
        public SupplyResponse Get(int id)
        {
            var order = _dbContext.DeliveryNote.Include(p => p.Request)
                        .ThenInclude(p => p.RequestItem).ThenInclude(p => p.VirtualItem).Include(p => p.Request)
                        .ThenInclude(p => p.Restaurant)
                        .SingleOrDefault(p => p.RequestId == id);

            return(order == null?SupplyResponse.NotFound("Delivery Note", id + "") : SupplyResponse.Ok(order));
        }
        public SupplyResponse Get(int id)
        {
            var order = _dbContext.BlanketRelease.Include(p => p.Agreement).ThenInclude(p => p.Supplier).Include(p => p.Request)
                        .ThenInclude(p => p.RequestItem).Include(p => p.BlanketReleaseLine).ThenInclude(p => p.Item).Include(p => p.Request)
                        .ThenInclude(p => p.Restaurant)
                        .SingleOrDefault(p => p.OrderId == id);

            return(order == null?SupplyResponse.NotFound("Purchase Order", id + "") : SupplyResponse.Ok(order));
        }
        public SupplyResponse Get(string id)
        {
            var item = _dbContext.Item.SingleOrDefault(p => p.SupplierItemId.Equals(id));

            if (item == null)
            {
                return(SupplyResponse.NotFound("item", id));
            }
            return(SupplyResponse.Ok(item));
        }
Esempio n. 24
0
        public SupplyResponse Get()
        {
            var agreements = _dbContext.Agreement.Select(p => p).Include(p => p.BlanketPurchaseAgreementDetails)
                             .Include(p => p.BlanketPurchaseAgreementLines).ThenInclude(p => p.Item)
                             .Include(p => p.ContractPurchaseAgreementDetails).Include(p => p.ContractPurchaseAgreementLines)
                             .ThenInclude(p => p.Item).Include(p => p.PlannedPurchaseAgreementDetails)
                             .Include(p => p.PlannedPurchaseAgreementLines).ThenInclude(p => p.Item);

            return(SupplyResponse.Ok(agreements));
        }
Esempio n. 25
0
        public SupplyResponse Get()
        {
            var orders = _dbContext.StandardPurchaseOrder.Include(p => p.Agreement).ThenInclude(p => p.Supplier)
                         .Include(p => p.Request)
                         .ThenInclude(p => p.RequestItem).Include(p => p.StandardPurchaseOrderLine).ThenInclude(p => p.Item)
                         .Include(p => p.Request)
                         .ThenInclude(p => p.Restaurant).Select(p => p);

            return(SupplyResponse.Ok(orders));
        }
Esempio n. 26
0
        public SupplyResponse Get(int id)
        {
            var order = _dbContext.ScheduleRelease.Include(p => p.Agreement)
                        .ThenInclude(p => p.PlannedPurchaseAgreementDetails).Include(p => p.Agreement)
                        .ThenInclude(p => p.Supplier).Include(p => p.Agreement)
                        .ThenInclude(p => p.PlannedPurchaseAgreementLines).ThenInclude(p => p.Item)
                        .SingleOrDefault(p => p.OrderId == id);

            return(order == null?SupplyResponse.NotFound("Schedule Release", id + "") : SupplyResponse.Ok(order));
        }
Esempio n. 27
0
        public SupplyResponse Get(int id)
        {
            var supplier = _dbContext.Supplier.SingleOrDefault(p => p.SupplierId == id);

            if (supplier == null)
            {
                return(SupplyResponse.NotFound("supplier", id + ""));
            }
            return(SupplyResponse.Ok(supplier));
        }
Esempio n. 28
0
 public SupplyResponse Post([FromBody] Supplier supplier)
 {
     if (string.IsNullOrWhiteSpace(supplier.SupplierName) || string.IsNullOrWhiteSpace(supplier.SupplierContactPerson) || string.IsNullOrWhiteSpace(supplier.SupplierAddress))
     {
         return(SupplyResponse.BadRequest("Required Field is Empty"));
     }
     _dbContext.Supplier.Add(supplier);
     _dbContext.SaveChanges();
     return(Get(supplier.SupplierId));
 }
Esempio n. 29
0
        public SupplyResponse Get(int id)
        {
            var item = _dbContext.Category.SingleOrDefault(p => p.CategoryId == id);

            if (item == null)
            {
                return(SupplyResponse.NotFound("categorty", id + ""));
            }
            return(SupplyResponse.Ok(item));
        }
Esempio n. 30
0
 public SupplyResponse Post([FromBody] Category category)
 {
     if (string.IsNullOrWhiteSpace(category.CategoryName))
     {
         return(SupplyResponse.RequiredFieldEmpty());
     }
     _dbContext.Category.Add(category);
     _dbContext.SaveChanges();
     return(Get(category.CategoryId));
 }