/// <summary>
        /// Populate Kasa tab
        /// </summary>
        /// <param name="customerList">List of <see cref="Customer"/></param>
        public void WriteKasaTab(List <Customer> customerList)
        {
            if (customerList == null)
            {
                return;
            }

            List <object> header = new List <object> {
                "Id", "Ime i prezime", "Suma"
            };
            ValueRange kasaData = new ValueRange {
                Values = new List <IList <object> > {
                    header
                }
            };

            foreach (var customer in customerList)
            {
                kasaData.Values.Add(new List <object>
                {
                    customer.Id,
                    customer.Name,
                    customer.Orders.Where(o => o.Meal.Foods[0].Restaurant.Name == Restaurant.Name).Sum(o => o.Price)
                });
            }

            GoogleSheetService.Clear(SheetId, _kasaSheet);
            GoogleSheetService.Update(kasaData, SheetId, _kasaSheet);
        }
Exemple #2
0
        public override void WriteMenu(List <Food> foods)
        {
            var header = new List <object> {
                "Naziv jela", "Opis", "Cena", "Tip"
            };
            var foodRange = new ValueRange {
                Values = new List <IList <object> > {
                    header
                }
            };

            foreach (var food in foods)
            {
                foodRange.Values.Add(new List <object>
                {
                    food.Name,
                    food.Description,
                    food.Price,
                    GetLocalFoodType(food.Type)
                });
            }

            // Clear sheet and write new data
            GoogleSheetService.Clear(_sheetId, FoodListSheet);
            GoogleSheetService.Update(foodRange, _sheetId, FoodListSheet);
        }
        /// <summary>
        /// Populate Orders tab in sheet with new order data
        /// </summary>
        /// <param name="orders">List of orders to write</param>
        public void PlaceOrders(List <Order> orders)
        {
            if (orders == null)
            {
                throw new ArgumentNullException(nameof(orders));
            }

            var header = new List <object> {
                "Jelo", "Komada", "Cena", "Cena Ukupno", "Narucili"
            };
            var orderRange = new ValueRange {
                Values = new List <IList <object> > {
                    header
                }
            };

            List <Food> listOFOrderdFood = new List <Food>();

            foreach (var order in orders)
            {
                foreach (var food in order.Meal.Foods)
                {
                    listOFOrderdFood.Add(food);
                }
            }

            var distinctFood = listOFOrderdFood.GroupBy(f => f.Id).Select(o => o.FirstOrDefault());
            int rowCounter   = 2; // First row with orders, used for formula

            foreach (var food in distinctFood)
            {
                var customerList = new List <object>();
                var formatedData = new List <object>();

                foreach (var order in orders)
                {
                    if (order.Meal.Foods.FirstOrDefault(f => f.Name == food.Name) != null)
                    {
                        if (!string.IsNullOrEmpty(order.Note))
                        {
                            customerList.Add(order.Customer.Name + "(" + order.Note + ")");
                        }
                        else
                        {
                            customerList.Add(order.Customer.Name);
                        }
                    }
                }

                formatedData.Add(food.Name);
                formatedData.Add(customerList.Count);
                formatedData.Add(food.Price);
                formatedData.Add($"=B{rowCounter}*C{rowCounter}"); // Add formula to sum
                rowCounter++;
                formatedData.AddRange(customerList);
                orderRange.Values.Add(formatedData);
            }

            GoogleSheetService.Clear(SheetId, OrdersSheet);
            GoogleSheetService.Update(orderRange, SheetId, OrdersSheet);
        }
        /// <summary>
        /// Setup daily menu sheet, making today first column
        /// </summary>
        public void DnevniMenuSheetSetup()
        {
            // Get data
            ValueRange sheetData = GoogleSheetService.GetColumns(SheetId, DailyMenuSheet);

            DateTime dateCounter = DateTime.Today;

            var sheetValues = sheetData.Values;
            var dayOfWeek   = GetLocalDayName(dateCounter.DayOfWeek);
            int today       = 0;

            for (int i = 0; i < sheetValues.Count; i++)
            {
                if (sheetValues[i][0].ToString() == dayOfWeek)
                {
                    today = i;
                }
            }

            ValueRange updatedRange = new ValueRange {
                Values = new List <IList <object> >()
            };
            const int daysToAdd = 0;

            // Insert today and after
            for (int i = today; i < sheetValues.Count; i++)
            {
                sheetValues[i][1] = dateCounter.AddDays(daysToAdd).ToString("dd-MM-yyyy");
                updatedRange.Values.Add(sheetValues[i]);
                if (dateCounter.DayOfWeek == DayOfWeek.Friday)
                {
                    dateCounter = dateCounter.AddDays(3);
                }
                else
                {
                    dateCounter = dateCounter.AddDays(1);
                }
            }

            // Insert before today
            for (int k = 0; k < today; k++)
            {
                sheetValues[k][1] = dateCounter.AddDays(daysToAdd).ToString("dd-MM-yyyy");
                updatedRange.Values.Add(sheetValues[k]);
                if (dateCounter.DayOfWeek == DayOfWeek.Friday)
                {
                    dateCounter = dateCounter.AddDays(3);
                }
                else
                {
                    dateCounter = dateCounter.AddDays(1);
                }
            }

            // Transpose values
            ValueRange formatedRange = new ValueRange {
                Values = new List <IList <object> >()
            };

            bool empty  = true;
            int  rowNum = 0;

            do
            {
                empty = true;
                List <object> row = new List <object>();
                for (int i = 0; i < updatedRange.Values.Count; i++)
                {
                    if (updatedRange.Values[i].Count > rowNum)
                    {
                        row.Add(updatedRange.Values[i][rowNum].ToString());
                        empty = false;
                    }
                    else
                    {
                        row.Add(string.Empty);
                    }
                }

                if (!empty)
                {
                    formatedRange.Values.Add(row);
                    rowNum++;
                }
            }while (!empty);

            GoogleSheetService.Clear(SheetId, DailyMenuSheet);
            GoogleSheetService.Update(formatedRange, SheetId, DailyMenuSheet);
        }