예제 #1
0
        public async Task <IActionResult> GetReportsByType(Guid personId, Guid classId, int type, DateTime?date = null)
        {
            if (date.HasValue == false)
            {
                date = DateTime.UtcNow;
            }
            var startDate = new DateTime(date.Value.Year, date.Value.Month, date.Value.Day);
            var endDate   = new DateTime(date.Value.Year, date.Value.Month, date.Value.Day, 23, 59, 59);

            switch (type)
            {
            case (int)EnumDailyReportType.NapsSleep:
            {
                var naps = await _unitOfWork.DailyReportNaps.GetAsync(x => x.IsActive &&
                                                                      x.PersonId == personId &&
                                                                      x.ClassId == classId &&
                                                                      x.Date >= startDate && x.Date <= endDate);

                return(PartialView("PartialDailyReportNap", DailyReportNap.Init(naps)));
            }

            case (int)EnumDailyReportType.Meals:
            {
                var meals = await _unitOfWork.DailyReportMeals.GetAsync(x => x.IsActive && x.OrganizationId == _organizationId &&
                                                                        x.ClassId == classId &&
                                                                        x.PersonId == personId &&
                                                                        x.Date >= startDate && x.Date <= endDate,
                                                                        include : p => p.Include(x => x.DailyReportFoods)
                                                                        );

                return(PartialView("PartialDailyReportMeal", DailyReportMeal.Init(meals)));
            }

            case (int)EnumDailyReportType.Bathroom:
            {
                var baths = await _unitOfWork.DailyReportBathrooms.GetAsync(x => x.IsActive && x.OrganizationId == _organizationId &&
                                                                            x.ClassId == classId &&
                                                                            x.PersonId == personId &&
                                                                            x.Date >= startDate && x.Date <= endDate

                                                                            );

                return(PartialView("PartialDailyReportBathroom", DailyReportBathroom.Init(baths)));
            }

            case (int)EnumDailyReportType.Medication:
            {
                var medications = await _unitOfWork.DailyReportMedications.GetAsync(x => x.IsActive && x.OrganizationId == _organizationId &&
                                                                                    x.ClassId == classId &&
                                                                                    x.PersonId == personId &&
                                                                                    x.Date >= startDate && x.Date <= endDate

                                                                                    );

                return(PartialView("PartialDailyReportMedication", DailyReportMedication.Init(medications)));
            }
            }

            return(View());
        }
예제 #2
0
        public async Task <JsonResult> AddEditMeal(DailyReportMealViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (model.Id == null)
                {
                    var meal = DailyReportMeal.Create(model.PersonId, model.ClassId, model.OrganizationId, model.Date, model.Note, _userId);
                    await _unitOfWork.DailyReportMeals.Insert(meal);

                    var saveMealResult = await _unitOfWork.SaveAsync();

                    if (saveMealResult.Succeeded)
                    {
                        var foods = new List <DailyReportFood>();
                        foreach (var f in model.Foods)
                        {
                            var food = DailyReportFood.Create(f.Food, f.FoodType, meal.Id, _userId);
                            foods.Add(food);
                        }
                        await _unitOfWork.DailyReportFoods.InsertRange(foods);
                    }
                }
                else
                {
                    var meal = await _unitOfWork.DailyReportMeals.GetOneAsync(x => x.IsActive && x.Id == model.Id, include : p => p.Include(x => x.DailyReportFoods));

                    meal.DailyReportFoods.ForEach(x => x.IsActive = false);

                    meal.Update(model);
                    _unitOfWork.DailyReportMeals.Update(meal);

                    var saveMealResult = await _unitOfWork.SaveAsync();

                    var foods = new List <DailyReportFood>();
                    foreach (var f in model.Foods)
                    {
                        var food = DailyReportFood.Create(f.Food, f.FoodType, meal.Id, _userId);
                        foods.Add(food);
                    }
                    await _unitOfWork.DailyReportFoods.InsertRange(foods);
                }
                var result = await _unitOfWork.SaveAsync();

                if (result.Succeeded)
                {
                    return(Json(new JsonMessage {
                        Color = "#ff6849", Message = "Meal saved", Header = "Success", Icon = "success", AdditionalData = model
                    }));
                }
                return(Json(new JsonMessage {
                    Color = "#ff6849", Message = "Save Error", Header = "Error", Icon = "error", AdditionalData = model
                }));
            }
            else
            {
                return(Json(new JsonMessage {
                    Color = "#ff6849", Message = "Model Error", Header = "Error", Icon = "error", AdditionalData = model
                }));
            }
        }
예제 #3
0
        public async Task <IActionResult> AddEditMeal(Guid personId, Guid classId, Guid organizationId, DateTime?date = null)
        {
            if (date.HasValue == false)
            {
                date = DateTime.UtcNow;
            }
            var model = DailyReportMeal.Init(personId, classId, organizationId, date.Value);

            return(View(model));
        }
예제 #4
0
        public async Task <IActionResult> GetMeals(Guid personId, Guid classId, Guid organizationId, DateTime?date)
        {
            if (date.HasValue == false)
            {
                date = DateTime.UtcNow;
            }
            var startDate = new DateTime(date.Value.Year, date.Value.Month, date.Value.Day);
            var endDate   = new DateTime(date.Value.Year, date.Value.Month, date.Value.Day, 23, 59, 59);
            var meals     = await _unitOfWork.DailyReportMeals.GetAsync(x => x.IsActive && x.OrganizationId == _organizationId &&
                                                                        x.ClassId == classId &&
                                                                        x.PersonId == personId &&
                                                                        x.Date >= startDate && x.Date <= endDate,
                                                                        include : p => p.Include(x => x.DailyReportFoods)
                                                                        );


            return(PartialView("PartialDailyReportMeal", DailyReportMeal.Init(meals)));
        }
예제 #5
0
        public static object Create(DailyReportMeal meal)
        {
            var foods = meal.DailyReportFoods?.Where(x => x.IsActive)?.Select(x => new DailyReportFoodViewModel()
            {
                Food = x.Food, FoodType = x.FoodType, Id = x.Id
            }).ToList();

            return(new DailyReportMealViewModel()
            {
                ClassId = meal.ClassId,
                Id = meal.Id,
                Date = meal.Date,
                Note = meal.Note,
                OrganizationId = meal.OrganizationId,
                PersonId = meal.PersonId,
                MealType = meal.MealType,
                Foods = foods
            });
        }
예제 #6
0
        public static DailyReportMealViewModel Create(DailyReportMeal meal, List <DailyReportFood> _foods)
        {
            var foods = _foods?.Select(x => new DailyReportFoodViewModel()
            {
                Food = x.Food, FoodType = x.FoodType, Id = x.Id
            }).ToList();

            return(new DailyReportMealViewModel()
            {
                ClassId = meal.ClassId,
                Id = meal.Id,
                Date = meal.Date,
                Note = meal.Note,
                OrganizationId = meal.OrganizationId,
                PersonId = meal.PersonId,
                MealType = meal.MealType,
                Foods = foods
            });
        }