/// <summary> /// Save Order Details. /// </summary> /// <param name="orderDetailViewModel"></param> /// <param name="cartItemList"></param> /// <param name="userDetail"></param> /// <returns></returns> public IResult SaveOrderDetails(OrderDetailViewModel orderDetailViewModel, List <CartItemViewModel> cartItemList, UserDetailForOrder userDetail) { orderDetailViewModel.OrderId = null; var result = new Result { Operation = Operation.Create, Status = Status.Success }; try { OrderDetail orderDetail = null; if (orderDetailViewModel != null) { orderDetail = new OrderDetail(); orderDetail.MapFromViewModel(orderDetailViewModel); if (userDetail != null) { orderDetail.UserId = ObjectId.Parse(userDetail.UserId); orderDetail.AddressId = ObjectId.Parse(userDetail.AddressId); } else { result.Message = UserNotification.NoUser; } orderDetail.CartItems = new List <CartItem>(); _orderDetailRepository.InsertOne(orderDetail); if (cartItemList != null && cartItemList.Any()) { var cartItems = new List <CartItem>(); cartItemList.ForEach(x => { var cartItem = new CartItem(); cartItem.MapFromViewModel(x); cartItems.Add(cartItem); }); var updateDefinition = Builders <OrderDetail> .Update.AddToSetEach(x => x.CartItems, cartItems); _orderDetailRepository.UpdateOne(t => t.OrderId == orderDetail.OrderId, updateDefinition); } else { result.Message = OrderNotification.NoCartItems; } orderDetailViewModel.MapFromModel(orderDetail); orderDetailViewModel.cartItems = cartItemList; result.Body = orderDetailViewModel; result.Message = OrderNotification.Saved; } else { result.Message = OrderNotification.OrderDetailsNotProvided; } } catch (Exception e) { result.Message = e.Message; result.Status = Status.Fail; } return(result); }
/// <summary> /// Save User Details /// </summary> /// <param name="userViewModel"></param> /// <param name="userAddressViewModel"></param> /// <returns></returns> public IResult SaveUserDetails(UserViewModel userViewModel, UserAddressViewModel userAddressViewModel) { userViewModel.UserId = null; var result = new Result { Operation = Operation.Create, Status = Status.Success }; try { UserDetailForOrder userDetail = null; User user = null; UserAddress userAddress = null; if (userViewModel != null) { user = _userRepository.GetOne(x => x.MailId.Equals(userViewModel.MailId) || x.MobNo.Equals(userViewModel.MobNo)); if (user == null) { user = new User(); user.MapFromViewModel(userViewModel); user.UserAddress = new List <UserAddress>(); _userRepository.InsertOne(user); } else { var updateDefinition = Builders <User> .Update .Set(x => x.Name, userViewModel.Name) .Set(x => x.MobNo, userViewModel.MobNo) .Set(x => x.MailId, userViewModel.MailId); _userRepository.UpdateOne(t => t.UserId == user.UserId, updateDefinition); } userDetail.UserId = user.UserId.ToString(); userDetail.MailId = user.MailId; userDetail.MobNo = user.MobNo; if (userAddressViewModel != null) { if (string.IsNullOrEmpty(userAddressViewModel.AddressId)) { userAddress = new UserAddress(); userAddress.MapFromViewModel(userAddressViewModel); userAddress.AddressId = ObjectId.GenerateNewId(); userDetail.AddressId = userAddress.AddressId.ToString(); var updateDefinition = Builders <User> .Update.AddToSet(x => x.UserAddress, userAddress); _userRepository.UpdateOne(t => t.UserId == user.UserId, updateDefinition); } else { userDetail.AddressId = userAddressViewModel.AddressId.ToString(); } } result.Body = userDetail; result.Message = UserNotification.Saved; } else { result.Message = UserNotification.UserDetailsNotProvided; } } catch (Exception e) { result.Message = e.Message; result.Status = Status.Fail; } return(result); }