예제 #1
0
        /// <summary>
        /// Maps view model of hotelmeal to hotelmeal model
        /// </summary>
        /// <param name="hotelMealToMap"></param>
        /// <param name="hotelMealDatabase"></param>
        /// <param name="userName"></param>
        /// <returns>Message</returns>
        public static HotelMeal AutoMapperHotelMeal(HotelMeal hotelMealToMap, HotelMeal hotelMealDatabase, string userName)
        {
            var hotelMealMapped = AutoMapper.Mapper.Map <HotelMeal>(hotelMealToMap);

            ResolveRemainingParamtersHotelMeal(hotelMealMapped, hotelMealDatabase, userName);
            return(hotelMealMapped);
        }
예제 #2
0
        public async Task TestGetHotelMeal_positive_Predicate_sample()
        {
            //Arrange
            int hotelId   = 5;
            var hotelMeal = new HotelMeal()
            {
                Id = 1, HotelId = 5, MealId = 1, Price = 1000, CurrencyId = 7, IsDeleted = false
            };
            var baseResult = new BaseResult <List <HotelMeal> >()
            {
                Result = new List <HotelMeal>()
                {
                    hotelMeal
                }
            };
            var pred = new Func <HotelMeal, bool>(x => x.HotelId == hotelMeal.HotelId && !x.IsDeleted);

            iHotelMealConnectionLibrary.Setup(x => x.GetListByPredicate(It.Is <Func <HotelMeal, bool> >(y => y.GetType() == pred.GetType()))).Returns(Task.FromResult(baseResult));
            //Act
            Task <BaseResult <List <HotelMeal> > > result = mealPlanRepository.GetHotelMeal(hotelId);

            //Assert
            Assert.IsTrue(result.Result != null);
            Assert.IsTrue(result.Result is BaseResult <List <HotelMeal> >);
        }
예제 #3
0
        /// <summary>
        ///  Return the mapped HotelMeal and HotelMealType model
        /// </summary>
        /// <param name="hotelAssociateMealPlanViewModel"></param>
        /// <returns></returns>
        public static void MapHotelMealAndHotelMealType(ref HotelMeal hotelMeal, ref List <HotelMealType> hotelMealTypeList, MealPlanViewModel mealPlanViewModel, string userName)
        {
            hotelMeal            = new HotelMeal();
            hotelMeal.HotelId    = mealPlanViewModel.HotelId;
            hotelMeal.MealId     = mealPlanViewModel.MealId;
            hotelMeal.Code       = "Meal_" + hotelMeal.HotelId + "_" + hotelMeal.MealId;
            hotelMeal.Price      = mealPlanViewModel.MealPlanOptions.Price;
            hotelMeal.CurrencyId = (mealPlanViewModel.MealPlanOptions.CurrencyId == null)? 0: mealPlanViewModel.MealPlanOptions.CurrencyId.Value;
            hotelMeal.CreatedBy  = userName;
            hotelMeal.UpdatedBy  = userName;
            if (mealPlanViewModel.IsSelected)
            {
                hotelMeal.IsDeleted = false;
            }
            else
            {
                hotelMeal.IsDeleted = true;
            }
            hotelMealTypeList = new List <HotelMealType>();
            foreach (var cuisine in mealPlanViewModel.MealPlanOptions.CuisineOptions)
            {
                HotelMealType model = new HotelMealType();
                model.HotelId       = mealPlanViewModel.HotelId;
                model.MealId        = mealPlanViewModel.MealId;
                model.CuisineTypeId = cuisine.Id;
                model.Code          = "MealType_" + hotelMeal.HotelId + "_" + hotelMeal.MealId + "_" + model.CuisineTypeId;
                model.Name          = cuisine.Cusine;
                model.NameItemId    = 1;
                model.CreatedBy     = userName;
                model.UpdatedBy     = userName;
                model.IsActive      = true;

                if (cuisine.IsSelected)
                {
                    model.IsDeleted = false;
                }
                else
                {
                    model.IsDeleted = true;
                }
                hotelMealTypeList.Add(model);
            }
        }
예제 #4
0
 /// <summary>
 /// Resolve remaining parameters
 /// </summary>
 /// <param name="destination"></param>
 /// <param name="source"></param>
 public static void ResolveRemainingParamtersHotelMeal(HotelMeal destination, HotelMeal source, string userName)
 {
     destination.Id        = source.Id;
     destination.CreatedBy = source.CreatedBy;
     destination.UpdatedBy = userName;
 }
예제 #5
0
        public async Task TestSaveAndUpdateHotelMeal_Update_ByHotelMealPredicate_Failed_Error()
        {
            //Arrange
            BaseResult <HotelMealType> baseResult = new BaseResult <HotelMealType>();

            baseResult.Result = new HotelMealType()
            {
            };
            List <MealPlanViewModel> mealPlanViewModelList = new List <MealPlanViewModel>();

            List <CuisineTypeViewModel> cuisineTypeViewModelList = new List <CuisineTypeViewModel>();
            CuisineTypeViewModel        cuisine1 = new CuisineTypeViewModel()
            {
                Id          = 1,
                Cusine      = "Indian",
                IsSelected  = true,
                ObjectState = ObjectState.Added
            };
            CuisineTypeViewModel cuisine2 = new CuisineTypeViewModel()
            {
                Id          = 2,
                Cusine      = "Asian",
                IsSelected  = true,
                ObjectState = ObjectState.Added
            };

            cuisineTypeViewModelList.Add(cuisine1);
            cuisineTypeViewModelList.Add(cuisine2);

            MealPlanViewModel mealPlanViewModel = new MealPlanViewModel()
            {
                HotelId         = 1103,
                MealId          = 1,
                IsSelected      = true,
                ObjectState     = ObjectState.Modified,
                MealPlanOptions = new MealOptionViewModel()
                {
                    CurrencyId  = 1,
                    Price       = 1000,
                    ObjectState = ObjectState.Modified,
                }
            };

            mealPlanViewModel.MealPlanOptions.CuisineOptions.AddRange(cuisineTypeViewModelList);
            mealPlanViewModelList.Add(mealPlanViewModel);

            var hotelMeal = new HotelMeal()
            {
            };
            var hotelMealbaseResult = new BaseResult <List <HotelMeal> >()
            {
                Result = new List <HotelMeal>()
                {
                    hotelMeal
                }
            };
            var pred = new Func <HotelMeal, bool>(x => x.HotelId == hotelMeal.HotelId && !x.IsDeleted);

            iHotelMealConnectionLibrary.Setup(x => x.GetListByPredicate(It.Is <Func <HotelMeal, bool> >(y => y.GetType() == pred.GetType()))).Returns(Task.FromResult(hotelMealbaseResult));

            //Act
            Task <BaseResult <HotelMealType> > actionResult = mealPlanRepository.SaveAndUpdateHotelMealAndMealType(mealPlanViewModelList, It.IsAny <string>());

            //Assert
            Assert.IsTrue(actionResult.Result.IsError);
            Assert.IsTrue(actionResult.Result.ExceptionMessage != null);
        }
예제 #6
0
        /// <summary>
        /// Add/Update HotelMeal and HotelMealType
        /// </summary>
        /// <param name="mealPlanViewModelList"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task <BaseResult <HotelMealType> > SaveAndUpdateHotelMealAndMealType(List <MealPlanViewModel> mealPlanViewModelList, string userName)
        {
            BaseResult <HotelMealType> result = new BaseResult <HotelMealType>();

            result.Result = new HotelMealType();
            HotelMeal            hotelMealRequest     = null;
            List <HotelMealType> hotelMealTypeRequest = null;

            foreach (var mealplan in mealPlanViewModelList)
            {
                MealPlanRequestMapper.MapHotelMealAndHotelMealType(ref hotelMealRequest, ref hotelMealTypeRequest, mealplan, userName);

                //To Add/Update HotelMeal
                if (mealplan.ObjectState == ObjectState.Added)
                {
                    var insertResult = await iHotelMealConnectionLibrary.InsertEntity(hotelMealRequest).ConfigureAwait(false);

                    if (insertResult.IsError || insertResult.ExceptionMessage != null)
                    {
                        result.IsError          = true;
                        result.ExceptionMessage = insertResult.ExceptionMessage;
                        return(result);
                    }
                }
                else if (mealplan.ObjectState == ObjectState.Modified || mealplan.ObjectState == ObjectState.Deleted || mealplan.MealPlanOptions.ObjectState == ObjectState.Modified)
                {
                    var hotelMealResult = await iHotelMealConnectionLibrary.GetListByPredicate(id => id.HotelId == hotelMealRequest.HotelId && id.MealId == hotelMealRequest.MealId && !id.IsDeleted).ConfigureAwait(false);

                    if (hotelMealResult.Result.Count > 0 && hotelMealResult != null)
                    {
                        var updatedHotelMeal = MealPlanRequestMapper.AutoMapperHotelMeal(hotelMealRequest, hotelMealResult.Result[0], userName);

                        var updateResult = await iHotelMealConnectionLibrary.UpdateEntityByDapper(updatedHotelMeal).ConfigureAwait(false);

                        if (updateResult.IsError || updateResult.ExceptionMessage != null)
                        {
                            result.IsError          = true;
                            result.ExceptionMessage = updateResult.ExceptionMessage;
                            return(result);
                        }
                    }
                    else
                    {
                        result.IsError   = true;
                        result.ErrorCode = (int)coreHelper.Constants.ErrorCodes.NoHotelMealOfID;
                        result.Message   = string.Format(coreHelper.Constants.ErrorMessage.NoHotelMealOfID, hotelMealRequest.Id);
                        return(result);
                    }
                }

                //To Add/Update HotelMealType
                if (hotelMealTypeRequest != null)
                {
                    foreach (var hotelMealType in hotelMealTypeRequest)
                    {
                        foreach (var cuisine in mealplan.MealPlanOptions.CuisineOptions)
                        {
                            if (hotelMealType.CuisineTypeId == cuisine.Id)
                            {
                                if (cuisine.ObjectState == ObjectState.Added)
                                {
                                    var insertResult = await iHotelMealTypeConnectionLibrary.InsertEntity(hotelMealType).ConfigureAwait(false);

                                    if (insertResult.IsError || insertResult.ExceptionMessage != null)
                                    {
                                        result.IsError          = true;
                                        result.ExceptionMessage = insertResult.ExceptionMessage;
                                        return(result);
                                    }

                                    result.Result.Id = (int)insertResult.Result;
                                }
                                else if (cuisine.ObjectState == ObjectState.Deleted)
                                {
                                    var hotelMealTypeResult = await iHotelMealTypeConnectionLibrary.GetListByPredicate(x => x.CuisineTypeId == hotelMealType.CuisineTypeId && x.MealId == hotelMealType.MealId && x.HotelId == hotelMealType.HotelId && x.IsActive && !x.IsDeleted).ConfigureAwait(false);

                                    if (hotelMealTypeResult.Result.Count > 0 && hotelMealTypeResult != null)
                                    {
                                        var updatedHotelMealType = MealPlanRequestMapper.AutoMapperHotelMealType(hotelMealType, hotelMealTypeResult.Result[0], userName);

                                        var updateResult = await iHotelMealTypeConnectionLibrary.UpdateEntityByDapper(hotelMealType).ConfigureAwait(false);

                                        if (updateResult.IsError || updateResult.ExceptionMessage != null)
                                        {
                                            result.IsError          = true;
                                            result.ExceptionMessage = updateResult.ExceptionMessage;
                                            return(result);
                                        }
                                        else if (updateResult.Result)
                                        {
                                            result.Result.Id = hotelMealType.Id;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }