Example #1
0
        private static void CreateProject()
        {
            //AsymmetricEncryption.GenerateRegisterFile("yazhi.pang", "autox");
            var fileContent = File.ReadAllText("yazhi.pang.pem");
            var forSake     = XElement.Parse(fileContent);
            var projectName = forSake.GetAttributeValue("ProjectName");

            if (MongoDBManager.GetInstance().IsProjectExisted(projectName))
            {
                Console.WriteLine("Project already existed, continue?(y/n):");
                if (!Console.ReadKey().KeyChar.Equals('y'))
                {
                    return;
                }
            }
            MongoDBManager.GetInstance().SetProject(projectName);
            var root = forSake.Element("Root");
            var publicAndPrivateKey = root.GetAttributeValue("PublicAndPrivateKey");
            var secret    = root.GetAttributeValue("Secret");
            var decrypted = AsymmetricEncryption.DecryptText(secret, 2048, publicAndPrivateKey);
            var userName  = root.GetAttributeValue("UserName");

            foreach (XElement descendant in forSake.Descendants())
            {
                DBFactory.GetData().Save(descendant);
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            Dictionary <string, OnlineScript> DicOnlineScripts = new Dictionary <string, OnlineScript>();

            MongoDBManager Databse = new MongoDBManager();

            Databse.Init();
            Server OnlineServer = new Server(Databse, DicOnlineScripts);

            DicOnlineScripts.Add(AskGameDataScriptServer.ScriptName, new AskGameDataScriptServer());
            DicOnlineScripts.Add(AskLoginScriptServer.ScriptName, new AskLoginScriptServer(OnlineServer));
            DicOnlineScripts.Add(Core.Online.AskJoinRoomScriptServer.ScriptName, new AskJoinRoomScriptServer(OnlineServer));
            DicOnlineScripts.Add(AskRoomListScriptServer.ScriptName, new AskRoomListScriptServer(OnlineServer));
            DicOnlineScripts.Add(CreateRoomTripleThunderScriptServer.ScriptName, new CreateRoomTripleThunderScriptServer(OnlineServer, TripleThunderClientGroup.Template));
            DicOnlineScripts.Add(SendGameDataScriptServer.ScriptName, new SendGameDataScriptServer(OnlineServer));
            DicOnlineScripts.Add(TransferRoomScriptServer.ScriptName, new TransferRoomScriptServer(OnlineServer, TripleThunderClientGroup.Template));

            IniFile ConnectionInfo = IniFile.ReadFromFile("ConnectionInfo.ini");
            string  PublicIP       = ConnectionInfo.ReadField("ServerInfo", "PublicIP");
            int     PublicPort     = int.Parse(ConnectionInfo.ReadField("ServerInfo", "PublicPort"));

            OnlineServer.StartListening(PublicIP, PublicPort);
            Console.ReadKey();
            OnlineServer.StopListening();
        }
        public async Task <ActionResult> ShowMovieInformation(string id)
        {
            var            oid   = new ObjectId(id);
            MongoDBManager mm    = new MongoDBManager();
            Movie          movie = await mm.GetMovie(oid);

            var userRating = mm.GetUserRating(User.Identity.GetUserId(), oid);
            ShowMovieInformationViewModel model = new ShowMovieInformationViewModel()
            {
                ID              = oid,
                Director        = movie.Director,
                Actors          = movie.Actors,
                Genres          = movie.Genres,
                ImdbRating      = movie.ImdbRating,
                TmdbRating      = movie.TMDbRating,
                YouTube         = movie.YouTube,
                Title           = movie.Title,
                Runtime         = movie.Runtime,
                Poster          = movie.Poster,
                Plot            = movie.Plot,
                Language        = movie.Language,
                MetascoreRating = movie.MetascoreRating,
                Released        = movie.Released.Value,
                AvgUserRating   = movie.AvgUserRating
            };

            if (userRating != null)
            {
                model.Liked      = true;
                model.UserRating = userRating.UserRating;
            }

            return(View(model));
        }
        public async Task <ActionResult> ShowUserMovies(int?page)
        {
            MongoDBManager  mm   = new MongoDBManager();
            UserInformation user = await mm.GetUserInformation(User.Identity.GetUserId());

            List <MovieListModel> movies = new List <MovieListModel>();

            if (user.MovieLikes != null)
            {
                foreach (var userMovie in user.MovieLikes)
                {
                    MovieListModel newMovie = new MovieListModel()
                    {
                        AvgUserRating = userMovie.UserRating,
                        ID            = userMovie.Id,
                        Title         = userMovie.Name
                    };
                    var movie = await mm.GetMovie(userMovie.Id);

                    newMovie.Poster = movie.Poster;
                    movies.Add(newMovie);
                }
            }

            return(View(movies.ToPagedList(page ?? 1, 12)));
        }
        public ActionResult UpdateTweets()
        {
            MongoDBManager mm = new MongoDBManager();

            mm.InsertNewTweets();

            return(View("ShowTweets", mm.GetAllTweets()));
        }
        public async Task <ActionResult> DislikeMovie(string movieID)
        {
            ObjectId       oid = new ObjectId(movieID);
            MongoDBManager mm  = new MongoDBManager();
            await mm.DislikeMovie(User.Identity.GetUserId(), oid);

            return(Json(string.Empty));
        }
        public async Task <ActionResult> UpdateUserRating(string movieID, int rating)
        {
            ObjectId       oid = new ObjectId(movieID);
            MongoDBManager mm  = new MongoDBManager();
            await mm.UpdateUserRating(User.Identity.GetUserId(), oid, rating);

            return(Json(string.Empty));
        }
Example #8
0
 public TransactionManager(IContextProviderFactory contextProvider, UserResolverService userService, MongoDBManager _mongoManager
                           , AuditLogRepository _auditLogRepository)
 {
     //Context = context;
     Context            = contextProvider.dbContext;
     auditLogRepository = _auditLogRepository;
     mongoManager       = _mongoManager;
     currentUserId      = userService.GetCurrentUser();
 }
        public async Task <ActionResult> LikeMovie(string movieID)
        {
            ObjectId oid = new ObjectId(movieID);

            System.Diagnostics.Debug.WriteLine(movieID);
            MongoDBManager mm = new MongoDBManager();
            await mm.LikeMovie(User.Identity.GetUserId(), oid);

            return(Json(string.Empty));
        }
        private MongoCursor <IncomeMDO> GetIncomeMongoCursor(MongoDB.Driver.IMongoQuery incomeMongoQuery, int currentPage)
        {
            int rowCount      = (currentPage * NumberOfRowsPerPage);
            int skipPageCount = rowCount != 0 ? (rowCount - NumberOfRowsPerPage) : 0;
            MongoCursor <IncomeMDO> incomeMongoCursor = new MongoDBManager().Find <IncomeMDO>("Incomes", incomeMongoQuery);

            incomeMongoCursor.Skip  = skipPageCount;                                        //------> Setting the skip count
            incomeMongoCursor.Limit = NumberOfRowsPerPage;                                  //-----> Setting the take count (Limit)
            incomeMongoCursor.SetSortOrder(SortBy.Descending("IncomeDate", "CreatedDate")); //Setting the sort order before executing

            return(incomeMongoCursor);
        }
Example #11
0
        public static void TestDbClient(MongoDBManager mdm)
        {
            Client client = new Client();

            client.AvailabilityStart = "0:00";
            client.AvailabilityEnd   = "0:00";
            client.Name        = "VDR";
            client.Priority    = 1;
            client.MaximumJobs = 2;
            client.Online      = false;
            mdm.InsertClient(client);
        }
Example #12
0
        public static void TestDbJob(MongoDBManager mdm)
        {
            List <Client> clients = mdm.GetClients();
            Job           job     = new Job {
                Name           = "Neva Give üp",
                Subtitle       = "Der einzig wahre Japaner",
                Path           = "D:\\Recording\\Neva Give üp - Der einzig wahre Japaner.mkv",
                AssignedClient = new MongoDB.Driver.MongoDBRef("clients", clients.First().Id),
            };

            mdm.InsertJob(job);
        }
        public async Task <List <Movie> > GetRecommendedMovies(string userID)
        {
            MongoDBManager mm     = new MongoDBManager();
            List <Movie>   movies = new List <Movie>();

            Dictionary <ObjectId, int> similarMovies = new Dictionary <ObjectId, int>();
            UserInformation            user          = await mm.GetUserInformation(userID);

            if (user == null)
            {
                return(movies);
            }

            foreach (var movieLike in user.MovieLikes)
            {
                List <UserInformation> users = mm.GetAllUsersWithExceptCurrent(userID, movieLike);

                foreach (var userFromDb in users)
                {
                    foreach (var movie in userFromDb.MovieLikes)
                    {
                        if (!similarMovies.ContainsKey(movie.Id))
                        {
                            similarMovies.Add(movie.Id, 0);
                        }

                        similarMovies[movie.Id]++;
                    }
                }
            }

            var sortedSimilarMovies = from pair in similarMovies
                                      orderby pair.Value descending
                                      select pair;

            int counter = 0;

            foreach (var sortedSimilarMovie in sortedSimilarMovies)
            {
                if (user.MovieLikes.Exists(x => x.Id == sortedSimilarMovie.Key))
                {
                    continue;
                }

                counter++;
                movies.Add(await mm.GetMovie(sortedSimilarMovie.Key));
            }

            return(movies);
        }
        public async Task <ActionResult> UpdateUserLikes(IndexViewModel model, int?page)
        {
            if (Session["tokenFB"] != null)
            {
                MongoDBManager   mm     = new MongoDBManager();
                List <MovieLike> movies = await mm.UpdateUserLikes(User.Identity.GetUserId(), Session["tokenFB"].ToString());

                return(View("ShowUserMovies", movies));
            }
            else
            {
                return(View("ShowUserMovies", (new List <MovieLike>()).ToPagedList(page ?? 1, 12)));
            }
        }
        //
        //show user information



        public async Task <ActionResult> ShowUserInformation()
        {
            MongoDBManager  mm   = new MongoDBManager();
            UserInformation user = await mm.GetUserInformation(User.Identity.GetUserId());

            ShowUserInformationViewModel model = new ShowUserInformationViewModel()
            {
                Birthday  = user.Birthday,
                FirstName = user.FirstName,
                LastName  = user.LastName,
                Email     = user.Email
            };

            return(View(model));
        }
Example #16
0
        /// <summary>
        /// Get all expenses by using MongoQuery
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="currentPage"></param>
        /// <param name="expenseDate"></param>
        /// <param name="expenseTypes"></param>
        /// <returns></returns>
        public IList <IExpense> GetAll(int userId, int currentPage, DateTime expenseDate, string expenseMonth, IList <IExpenseType> expenseTypes = null)
        {
            MongoDB.Driver.IMongoQuery expenseMongoQuery = this.GetExpenseMongoQuery(userId, expenseDate, expenseMonth, expenseTypes);
            int totalExpenseCount = new MongoDBManager().GetCountByQuery <ExpenseMDO>(EXPENSES, expenseMongoQuery); //-----> MongoDb call to get the count.

            if (totalExpenseCount < ((currentPage - 1) * NumberOfRowsPerPage))
            {
                currentPage = 1;
            }
            MongoCursor <ExpenseMDO> expenseMongoCursor = this.GetExpenseMongoCursor(expenseMongoQuery, currentPage);
            List <IExpense>          expenses           = this.MapExpenseMDOCollectionToDomainList(expenseMongoCursor.ToList());//-----> MongoDb Call to get the filtered incomes.

            expenses.ForEach(a => a.TotalCount = totalExpenseCount);

            return(expenses);
        }
        /// <summary>
        /// Get all incomes by using MongoQuery
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="currentPage"></param>
        /// <param name="incomeDate"></param>
        /// <param name="incomeTypes"></param>
        /// <returns></returns>
        public List <IIncome> GetAllByMongoQuery(int userId, int currentPage, DateTime incomeDate, List <IIncomeType> incomeTypes = null)
        {
            MongoDB.Driver.IMongoQuery incomeMongoQuery = this.GetIncomeMongoQuery(userId, incomeDate, incomeTypes);
            int totalIncomeCount = new MongoDBManager().GetCountByQuery <IncomeMDO>("Incomes", incomeMongoQuery); //-----> MongoDb call to get the count.

            if (totalIncomeCount < ((currentPage - 1) * NumberOfRowsPerPage))
            {
                currentPage = 1;
            }
            MongoCursor <IncomeMDO> incomeMongoCursor = this.GetIncomeMongoCursor(incomeMongoQuery, currentPage);
            List <IIncome>          incomes           = this.MapIncomeMDOCollectionToDomainList(incomeMongoCursor.ToList());//-----> MongoDb Call to get the filtered incomes.

            incomes.ForEach(a => a.TotalCount = totalIncomeCount);


            return(incomes);
        }
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
                    // Get the information about the user from the external login provider
                    UserInformation facebookUser = new UserInformation()
                    {
                        Birthday  = default(DateTime),
                        FirstName = "",
                        LastName  = "",
                        Email     = user.Email,
                        Id        = user.Id
                    };
                    facebookUser.MovieLikes = new List <MovieLike>();

                    MongoDBManager mongoManager = new MongoDBManager();
                    mongoManager.InsertNewUser(facebookUser);
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Example #19
0
        private IQueryable <ExpenseMDO> GetExpenseQuery(int userId, DateTime expenseDate, IList <IExpenseType> expenseTypes = null)
        {
            IQueryable <ExpenseMDO> expenseCollection         = new MongoDBManager().GetAll <ExpenseMDO>(EXPENSES);
            IQueryable <ExpenseMDO> expenseFilteredCollection = (from i in expenseCollection.Where(x => x.UserId == userId) select i);

            if (!expenseDate.IsDefault())
            {
                expenseFilteredCollection = expenseFilteredCollection.Where <ExpenseMDO>(x => x.ExpenseDate == expenseDate);
                if ((expenseTypes != null && expenseTypes.Any()))
                {
                    List <int> expenseTypeIds = expenseTypes.Select(t => t.TypeId).ToList <int>();
                    expenseFilteredCollection = expenseFilteredCollection.Where <ExpenseMDO>(x => x.ExpenseType.TypeId.In(expenseTypeIds));
                }
            }
            else if ((expenseTypes != null && expenseTypes.Any()))
            {
                List <int> expenseTypeIds = expenseTypes.Select(t => t.TypeId).ToList <int>();
                expenseFilteredCollection = expenseFilteredCollection.Where <ExpenseMDO>(x => x.ExpenseType.TypeId.In(expenseTypeIds));
            }
            return(expenseFilteredCollection.OrderByDescending(x => x.ExpenseDate)); // Order by desc by expense date (not considering Modified Date)
        }
Example #20
0
        public async Task <ActionResult> Index(int?page)
        {
            MongoDBManager mm     = new MongoDBManager();
            var            movies = await mm.GetMovies();

            List <MovieListModel> listMovies = new List <MovieListModel>();

            foreach (var m in movies)
            {
                MovieListModel newMovie = new MovieListModel()
                {
                    AvgUserRating = m.AvgUserRating,
                    ID            = m.ID,
                    Title         = m.Title
                };
                var movie = await mm.GetMovie(m.ID);

                newMovie.Poster = movie.Poster;
                listMovies.Add(newMovie);
            }

            return(View(listMovies.ToPagedList(page ?? 1, 12)));
        }
        private IQueryable <IncomeMDO> GetIncomeQuery(int userId, DateTime incomeDate, List <IIncomeType> incomeTypes = null)
        {
            IQueryable <IncomeMDO> incomeCollection         = new MongoDBManager().GetAll <IncomeMDO>("Incomes");
            IQueryable <IncomeMDO> incomeFilteredCollection = (from i in incomeCollection.Where(x => x.UserId == userId)
                                                               //orderby i.RowNumber ascending
                                                               select i);

            if (!incomeDate.IsDefault())
            {
                incomeFilteredCollection = incomeFilteredCollection.Where <IncomeMDO>(x => x.IncomeDate == incomeDate);
                if ((incomeTypes != null && incomeTypes.Any()))
                {
                    List <int> incomeTypeIds = incomeTypes.Select(t => t.TypeId).ToList <int>();
                    incomeFilteredCollection = incomeFilteredCollection.Where <IncomeMDO>(x => x.IncomeType.TypeId.In(incomeTypeIds));
                }
            }
            else if ((incomeTypes != null && incomeTypes.Any()))
            {
                List <int> incomeTypeIds = incomeTypes.Select(t => t.TypeId).ToList <int>();
                incomeFilteredCollection = incomeFilteredCollection.Where <IncomeMDO>(x => x.IncomeType.TypeId.In(incomeTypeIds));
            }
            return(incomeFilteredCollection);
        }
Example #22
0
 /// <summary>
 /// Initializes the Infuser with command line parameters and database storage capabilities
 /// and retrieves the console application's execution directory.
 /// </summary>
 /// <param name="args">Command line parameters from Main</param>
 /// <param name="lgr">A Logger</param>
 /// <param name="mdm">MongoDB Wrapper for data manipulation</param>
 public Infuser(string[] args, Log lgr, MongoDBManager mdm) : this(args, lgr)
 {
     this.mdm = mdm;
 }
        public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user.Id, info.Login);

                    if (result.Succeeded)
                    {
                        var     fb   = new FacebookClient(Session["tokenFB"].ToString());
                        dynamic data = new System.Dynamic.ExpandoObject();
                        data.FirstName = "";
                        data.LastName  = "";
                        data.Birthday  = default(DateTime);
                        data.movies    = null;
                        //data.Birthday = "";
                        data = fb.Get("/me?fields=first_name,last_name,email,birthday,movies");
                        UserInformation facebookUser = new UserInformation()
                        {
                            Birthday = DateTime.ParseExact(data.birthday, "MM/dd/yyyy", CultureInfo.InvariantCulture),
                            //Birthday = data.Birthday,
                            FirstName = data.first_name,
                            LastName  = data.last_name,
                            Email     = model.Email,
                            Id        = user.Id
                        };
                        facebookUser.MovieLikes = new List <MovieLike>();
                        if (data.movies != null)
                        {
                            foreach (dynamic movie in data.movies.data)
                            {
                                TMDbManager    movieManager = new TMDbManager();
                                MongoDBManager mm           = new MongoDBManager();
                                var            exists       = await mm.FindMoviesByName((string)movie.name);

                                ObjectId?movieId = null;
                                if (exists.Count >= 1)
                                {
                                    movieId = exists.First().ID;
                                }
                                else
                                {
                                    movieId = await movieManager.InsertMovieByName(movie.name);
                                }
                                if (movieId != null)
                                {
                                    facebookUser.MovieLikes.Add(new MovieLike()
                                    {
                                        Id = movieId.Value, Name = movie.name
                                    });
                                }
                            }
                        }

                        MongoDBManager mongoManager = new MongoDBManager();
                        mongoManager.InsertNewUser(facebookUser);
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return(View(model));
        }
        public ActionResult ShowTweets()
        {
            MongoDBManager mm = new MongoDBManager();

            return(View("ShowTweets", mm.GetAllTweets()));
        }
        public static void GenerateProductReports(string folderName)
        {
            DirectoryInfo directory = Directory.CreateDirectory(folderName);

            List<MongoProductReport> mongoProductsReports = new List<MongoProductReport>();
            MongoDBManager<MongoProductReport> mongo = new MongoDBManager<MongoProductReport>();

            using (var msSQLServerContext = new SupermarketEntities())
            {
                var sales =
                    from product in msSQLServerContext.Products
                    join vendor in msSQLServerContext.Vendors
                    on product.VendorId equals vendor.VendorId
                    join sale in msSQLServerContext.Sales
                    on product.ProductId equals sale.ProductId
                    group sale by sale.ProductId into productsById
                    select new
                    {
                        ProductId = productsById.Key,
                        SalesTotalQuantity = productsById.Sum(s => s.ProductQuantity),
                        SalesTotalSum = productsById.Sum(s => s.ProductTotalSum)
                    };

                var productReports =
                    from sale in sales
                    join product in msSQLServerContext.Products
                    on sale.ProductId equals product.ProductId
                    join vendor in msSQLServerContext.Vendors
                    on product.VendorId equals vendor.VendorId
                    select new
                    {
                        ProductId = sale.ProductId,
                        ProductName = product.ProductName,
                        VendorName = vendor.VendorName,
                        SalesTotalQuantity = sale.SalesTotalQuantity,
                        SalesTotalSum = sale.SalesTotalSum
                    };

                foreach (var productReport in productReports)
                {
                    JObject jsonObject = new JObject(
                        new JProperty("product-id", productReport.ProductId),
                        new JProperty("product-name", productReport.ProductName),
                        new JProperty("vendor-name", productReport.VendorName),
                        new JProperty("total-quantity-sold", productReport.SalesTotalQuantity),
                        new JProperty("total-incomes", productReport.SalesTotalSum));

                    string filePath = Path.Combine(folderName, string.Format("{0}.json", productReport.ProductId));

                    using (FileStream file = File.Create(filePath))
                    {
                        using (StreamWriter writer = new StreamWriter(file))
                        {
                            writer.Write(jsonObject.ToString());
                        }
                    }

                    MongoProductReport mongoProductReport = new MongoProductReport
                    {
                        ProductId = productReport.ProductId,
                        ProductName = productReport.ProductName,
                        VendorName = productReport.VendorName,
                        TotalQuantitySold = productReport.SalesTotalQuantity,
                        TotalIncomes = productReport.SalesTotalSum
                    };

                    mongoProductsReports.Add(mongoProductReport);
                }
            }

            mongo.InsertInMongoDB(mongoProductsReports, "ProductsReports");
        }
 public ServiceLogRepository(MongoDBManager _mongoDBManager)
 {
     MongoDBManager = _mongoDBManager;
 }
        public async Task <List <Movie> > GetRecommendedMovies(string userID)
        {
            MongoDBManager mm     = new MongoDBManager();
            List <Movie>   movies = new List <Movie>();

            Dictionary <string, int> genras = new Dictionary <string, int>();
            UserInformation          user   = await mm.GetUserInformation(userID);

            if (user == null)
            {
                return(movies);
            }


            /*foreach (var movieLike in user.MovieLikes) //get user favourite genra
             * {
             *  var movie = mm.GetMovie(movieLike.Id);
             *  List<string> movieGenras = movie.Genre.Split(',').Select(x => x.Trim()).ToList();
             *
             *  if (parameters.Valid(movieGenras))
             *  {
             *      movies.Add(movie);
             *  }
             *
             *
             * }
             * return movies;*/
            foreach (var movieLike in user.MovieLikes)//get user favourite genra
            {
                var movie = await mm.GetMovie(movieLike.Id);

                List <string> movieGenras = movie.Genres;

                foreach (var movieGenra in movieGenras)
                {
                    if (!genras.ContainsKey(movieGenra))
                    {
                        genras.Add(movieGenra, 0);
                    }
                    genras[movieGenra]++;
                }
            }

            var    max            = genras.Values.Max();
            string favouriteGenre = "";

            foreach (var genre in genras.Keys)
            {
                if (genras[genre] == max)
                {
                    favouriteGenre = genre;
                    break;
                }
            }

            movies = mm.GetMoviesWithGenre(favouriteGenre);
            List <Movie> moviesWithoutUserLiked = new List <Movie>();

            foreach (var movie in movies)
            {
                bool exist = false;
                foreach (var userLiked in user.MovieLikes)
                {
                    if (userLiked.Id == movie.ID)
                    {
                        exist = true;
                        break;
                    }
                }

                if (!exist)
                {
                    moviesWithoutUserLiked.Add(movie);
                }
            }

            MoviesSort ms = new MoviesSort();

            moviesWithoutUserLiked.Sort(ms);
            return(moviesWithoutUserLiked);
        }
Example #28
0
        /// <summary>
        /// Method for extracting expenses reports in XML format
        /// </summary>
        /// <param name="filePath">Filepath for the .xml file</param>
        public static void ReadVendorMonthlyExpenses(string filePath)
        {
            XmlReader reader = XmlReader.Create(filePath);

            List<MongoVendorExpense> mongoVendorExpensesList = new List<MongoVendorExpense>();

            using (var msSQLServerContext = new SupermarketEntities())
            {
                using (reader)
                {
                    int vendorId = 0;

                    while (reader.Read())
                    {
                        //Insert a new vendor
                        if (reader.NodeType == XmlNodeType.Element && reader.Name == "sale")
                        {
                            string vendorName = reader.GetAttribute("vendor");
                            var vendor = msSQLServerContext.Vendors.FirstOrDefault(v => v.VendorName == vendorName);

                            if (vendor == null)
                            {
                                // the vendor doesn't exist
                                vendor = new Vendor
                                {
                                    VendorName = vendorName
                                };

                                msSQLServerContext.Vendors.Add(vendor);
                                msSQLServerContext.SaveChanges();
                            }

                            vendorId = vendor.VendorId;
                        }

                        //Insert Expenses
                        if (reader.NodeType == XmlNodeType.Element && reader.Name == "expenses")
                        {
                            string month = reader.GetAttribute("month");
                            DateTime monthAsDate = DateTime.ParseExact(month, "MMM-yyyy", CultureInfo.InvariantCulture);

                            decimal amount = reader.ReadElementContentAsDecimal();

                            var vendorMonthlyExpense = new VendorExpense
                            {
                                VendorId = vendorId,
                                Month = monthAsDate.Month,
                                Year = monthAsDate.Year,
                                Amount = amount
                            };

                            var mongoVendorExpense = new MongoVendorExpense
                            {
                                VendorId = vendorId,
                                Month = monthAsDate.Month,
                                Year = monthAsDate.Year,
                                Amount = amount
                            };

                            mongoVendorExpensesList.Add(mongoVendorExpense);
                            msSQLServerContext.VendorExpenses.Add(vendorMonthlyExpense);
                        }
                    }
                }

                MongoDBManager<MongoVendorExpense> mongoDBInserter = new MongoDBManager<MongoVendorExpense>();
                mongoDBInserter.InsertInMongoDB(mongoVendorExpensesList, "VendorExpenses");

                msSQLServerContext.SaveChanges();
            }
        }
Example #29
0
 public AuditLogRepository(MongoDBManager _mongoDBManager)
 {
     MongoDBManager = _mongoDBManager;
 }
 public ExceptionLogRepository(MongoDBManager _mongoDBManager)
 {
     MongoDBManager = _mongoDBManager;
 }
        public async Task <List <Movie> > GetRecommendedMovies(string userID)
        {
            MongoDBManager mm     = new MongoDBManager();
            List <Movie>   movies = new List <Movie>();

            Dictionary <string, int> actors = new Dictionary <string, int>();
            UserInformation          user   = await mm.GetUserInformation(userID);

            if (user == null)
            {
                return(movies);
            }


            foreach (var movieLike in user.MovieLikes)//get user favourite genra
            {
                var movie = await mm.GetMovie(movieLike.Id);

                List <string> movieActors = movie.Actors;

                foreach (var movieActor in movieActors)
                {
                    if (!actors.ContainsKey(movieActor))
                    {
                        actors.Add(movieActor, 0);
                    }
                    actors[movieActor]++;
                }
            }

            var    max            = actors.Values.Max();
            string favouriteActor = "";

            foreach (var actor in actors.Keys)
            {
                if (actors[actor] == max)
                {
                    favouriteActor = actor;
                    break;
                }
            }

            movies = await mm.GetMoviesWithActor(favouriteActor);

            List <Movie> moviesWithoutUserLiked = new List <Movie>();

            foreach (var movie in movies)
            {
                bool exist = false;
                foreach (var userLiked in user.MovieLikes)
                {
                    if (userLiked.Id == movie.ID)
                    {
                        exist = true;
                        break;
                    }
                }

                if (!exist)
                {
                    moviesWithoutUserLiked.Add(movie);
                }
            }

            MoviesSort ms = new MoviesSort();

            moviesWithoutUserLiked.Sort(ms);
            return(moviesWithoutUserLiked);
        }