Пример #1
0
 public bool LoadKeys(ArtContext dbContext)
 {
     try
     {
         //Load only once
         if (ApiKeyList == null)
         {
             ApiKeyList = dbContext.APIKeys.ToList();
         }
         if (ApiKeyList.Count == 0)
         {
             return(false); //keys not set up in DB
         }
         _log.LogInformation("Api keys loaded from database..");
     }
     catch (Exception e)
     {
         //Failed to load API keys from DB. Log exception
         _log.LogError(e.Message);
     }
     if (ApiKeyList == null)
     {
         return(false);
     }
     return(true);
 }
        public ActionResult EditArts(EditModel model, HttpPostedFileBase upload, int Id)
        {
            if (upload != null)
            {
                string fileName = System.IO.Path.GetFileName(upload.FileName);
                upload.SaveAs(Server.MapPath("~/Files/" + fileName));
                int photoId;
                using (ArtContext db1 = new ArtContext())
                {
                    PhotoArt p1 = new PhotoArt {
                        PhotoName = fileName, Photo = Server.MapPath("~/ Files / " + fileName)
                    };
                    db1.PhotoArts.Add(p1);
                    db1.SaveChanges();
                    photoId = p1.Id;
                    ArtWork artWork = db1.ArtWorks.Where(p => p.Id == Id).FirstOrDefault();
                    artWork.PhotoArtId = photoId;
                    db1.SaveChanges();
                }
            }
            else
            {
                db.Entry(model.ArtWorks).State = EntityState.Modified;
                db.SaveChanges();
            }

            return(RedirectToAction("ListArts"));
        }
Пример #3
0
        public ActionResult Adhoc(AdhocModel model)
        {
            string sql            = model.Sql;
            string currentBuiltin = model.CurrentBuiltin;

            model = new AdhocModel {
                Sql = sql, Schema = schema, Builtins = builtins, CurrentBuiltin = currentBuiltin
            };

            try
            {
                if (sql.Trim().ToLower().StartsWith("select"))
                {
                    var results = new List <List <string> >();

                    var rows = ArtContext.Query(sql);

                    bool first = true;
                    foreach (var row in rows)
                    {
                        if (first)
                        {
                            List <string> headers = new List <string>();
                            foreach (var column in (IDictionary <string, object>)row)  // get column names
                            {
                                headers.Add(column.Key);
                            }

                            results.Add(headers);
                            first = false;
                        }

                        var values = new List <string>();
                        foreach (var column in (IDictionary <string, object>)row)  // get column values
                        {
                            string value = column.Value == null ? "" : column.Value.ToString();
                            values.Add(value);
                        }
                        results.Add(values);
                    }

                    model.Results = results;
                }
                else
                {
                    ArtContext.Execute(sql);
                    model.Results.Add(new List <string> {
                        "Query ran successfully."
                    });
                }
            }
            catch (Exception ex)
            {
                model.Exception = ex.ToString();
            }


            return(View(model));
        }
Пример #4
0
        // workaround for an issue with OAuthWebSecurity.IsAuthenticatedWithOAuth

        bool IsAuthenticatedWithOAuth()
        {
            // next line is commented out because IsAuthenticatedWithOAuth seems to always return false
            // return OAuthWebSecurity.IsAuthenticatedWithOAuth;

            // quick and easy workaround
            var count = (int)ArtContext.Scalar("SELECT COUNT(UserId) FROM [webpages_OAuthMembership] WHERE UserId = @0", CurrentUser.Id);

            return(count > 0);
        }
        public ActionResult Search(string term)
        {
            // NOTE: jQuery control requires that parameter be named 'term' and returned values be named 'label'
            var label = new List <string>();
            var items = ArtContext.Query("SELECT TOP 5 Title FROM [Product] WHERE Title Like @0 ORDER BY Title", term + "%");

            foreach (var item in items)
            {
                string l = item.Title.ToString();
                label.Add(l.Ellipsify(20));
            }

            return(Json(label, JsonRequestBehavior.AllowGet));
        }
        public async Task Invoke(HttpContext httpContext, ArtContext dbContext)
        {
            try
            {
                // Load API Keys from DB on first hit
                if (!apiKeyRepo.LoadKeys(dbContext))
                {
                    httpContext.Response.StatusCode = 503; //API key not loaded

                    string msg = "API Key Load error";
                    await httpContext.Response.WriteAsync(msg);

                    _log.LogInformation(msg);

                    return;
                }

                if (!httpContext.Request.Headers.Keys.Contains(apiKeyConst))
                {
                    httpContext.Response.StatusCode = 400; //Bad Request

                    string msg = "API Key is missing";
                    await httpContext.Response.WriteAsync(msg);

                    _log.LogInformation(msg);

                    return;
                }
                else
                {
                    if (!apiKeyRepo.CheckValidApiKey(httpContext.Request.Headers[apiKeyConst].ToString().Trim()))
                    {
                        httpContext.Response.StatusCode = 401; //UnAuthorized
                        string msg = "Invalid API Key";
                        await httpContext.Response.WriteAsync(msg);

                        _log.LogInformation(msg);
                        return;
                    }
                }
                await _next.Invoke(httpContext);
            }
            catch (Exception ex)
            {
                _log.LogError(ex.Message);
            }
        }
 public ActionResult UploadPhoto(PhotoArt photo, HttpPostedFileBase upload)
 {
     if (upload != null)
     {
         string fileName = System.IO.Path.GetFileName(upload.FileName);
         upload.SaveAs(Server.MapPath("~/Files/" + fileName));
         using (ArtContext db = new ArtContext())
         {
             PhotoArt p1 = new PhotoArt {
                 PhotoName = fileName, Photo = Server.MapPath("~/ Files / " + fileName)
             };
             db.PhotoArts.Add(p1);
             db.SaveChanges();
         }
     }
     return(RedirectToAction("ListArts"));
 }
        public ActionResult EditArts(int Id)
        {
            EditModel model = new EditModel();

            using (ArtContext db = new ArtContext())
            {
                model.ArtWorks             = db.ArtWorks.FirstOrDefault(a => a.Id == Id);
                model.Authors              = db.Authors.ToList();
                model.PhotoArt             = db.PhotoArts.FirstOrDefault(a => a.Id == Id);
                model.AuthorsCollection    = db.Authors.ToList();
                model.TypesCollection      = db.Types.ToList();
                model.GenresCollection     = db.Genres.ToList();
                model.TechniquesCollection = db.Techniques.ToList();
                model.LocationsCollection  = db.Locations.ToList();
                model.PhotoArtCollection   = db.PhotoArts.ToList();
            }
            return(View(model));
        }
Пример #9
0
 public ArtTypesController(ArtContext context)
 {
     _context = context;
 }
Пример #10
0
 public ArtistController(ArtContext context) => _context = context;
 public ArtFinderController(ArtContext context, IConfiguration Configuration, ILogger <ArtFinderController> log)
 {
     _context       = context;
     _configuration = Configuration;
     _log           = log;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="BaseRepository{TEntity}"/> class.
 ///     A default contructor.
 ///     Contrutor padrão.
 /// </summary>
 /// <param name="context">
 ///     The context to be used.
 ///     O contexto a ser utilizado.
 /// </param>
 public BaseRepository(ArtContext context)
 {
     this.Db    = context;
     this.DbSet = this.Db.Set <TEntity>();
 }
Пример #13
0
 public HomeController(ArtContext context)
 {
     _context = context;
 }
Пример #14
0
 public ArtByLocationController(ArtContext context, ILogger <ArtByLocationController> log)
 {
     _context = context;
     _log     = log;
 }
Пример #15
0
 public static void Initialize(IServiceProvider serviceProvider)
 {
     using (var context = new ArtContext(serviceProvider.GetRequiredService <DbContextOptions <ArtContext> >()))
     {
         if (!context.ArtTypes.Any())
         {
             context.ArtTypes.AddRange(
                 new ArtType
             {
                 Type = "Painting"
             },
                 new ArtType
             {
                 Type = "Drawing"
             },
                 new ArtType
             {
                 Type = "Sculpture"
             },
                 new ArtType
             {
                 Type = "Plastic Art"
             },
                 new ArtType
             {
                 Type = "Decorative Art"
             },
                 new ArtType
             {
                 Type = "Visual Art"
             }
                 );
             context.SaveChanges();
         }
         if (!context.Artworks.Any())
         {
             context.Artworks.AddRange(
                 new Artwork
             {
                 Name        = "Red Dot",
                 Value       = 12000m,
                 Finished    = DateTime.Parse("2002-06-06"),
                 Description = "Painting of a large Red Dot on a white backgraound.",
                 ArtTypeID   = (context.ArtTypes.Where(d => d.Type == "Painting").SingleOrDefault().ID)
             },
                 new Artwork
             {
                 Name        = "Rossini Regal",
                 Value       = 99000m,
                 Finished    = DateTime.Parse("2009-12-06"),
                 Description = "Photograph of a regal horse.",
                 ArtTypeID   = (context.ArtTypes.Where(d => d.Type == "Visual Art").SingleOrDefault().ID)
             },
                 new Artwork
             {
                 Name        = "Love Sublime",
                 Value       = 19.99m,
                 Finished    = DateTime.Parse("2015-09-21"),
                 Description = "Soapstone Sculpture of woman's face gazing at an unknown figure.",
                 ArtTypeID   = (context.ArtTypes.Where(d => d.Type == "Sculpture").SingleOrDefault().ID)
             },
                 new Artwork
             {
                 Name        = "Igor Smashes",
                 Value       = 750000.50m,
                 Finished    = DateTime.Parse("1976-07-11"),
                 Description = "Abstract concept of smashed emotion done in crumpled paper.",
                 ArtTypeID   = (context.ArtTypes.Where(d => d.Type == "Plastic Art").SingleOrDefault().ID)
             });
             context.SaveChanges();
         }
     }
 }
        //
        // GET: /Dashboard/

        public ActionResult Dashboard()
        {
            var model = new DashboardModel();

            // lightweight query (only includes one column and data of first 4 months).
            var users = ArtContext.Users.Query("SELECT SignupDate FROM [User] WHERE SignupDate < '2013/5/1' ORDER BY SignupDate");

            // get date range to partition in weekly buckets
            var min = new DateTime(2013, 1, 1);
            var max = new DateTime(2013, 5, 1);  // (DateTime)users.Max(u => u.SignupDate);

            // create a bucket for each week
            int weeks   = (((max - min).Days + 7) / 7) + 1;
            var buckets = Enumerable.Range(1, weeks).ToDictionary(w => w, w => 0);

            // number of new users each week
            foreach (var user in users)
            {
                buckets[WeekOfYear(user.SignupDate.Value)]++;
            }

            // create cumulative values
            int runningTotal = 0;

            for (int i = 1; i <= buckets.Count; i++)
            {
                runningTotal += buckets[i];
                buckets[i]    = runningTotal;
            }

            // flot formatting
            var usersData  = new StringBuilder(@"[{ ""label"": ""Users"", ""color"" : ""#b00"", ""data"": [");
            var usersTicks = new StringBuilder("[");
            int index      = 1;

            foreach (var bucket in buckets)
            {
                usersData.Append("[" + index + ", " + bucket.Value + "],");
                usersTicks.Append("[" + index + @", """ + bucket.Key + @"""],");
                index++;
            }
            usersData  = usersData.Remove(usersData.Length - 1, 1).Append("] }]");
            usersTicks = usersTicks.Remove(usersTicks.Length - 1, 1).Append("]");

            model.UsersData  = usersData.ToString();
            model.UsersTicks = usersTicks.ToString();

            // sales data

            // lightweight query (only includes two columns and data of first 4 months).
            var orders = ArtContext.Orders.Query("SELECT OrderDate, TotalPrice FROM [Order] WHERE OrderDate < '2013/5/1' ORDER BY OrderDate");

            for (int i = 1; i <= buckets.Count; i++)
            {
                buckets[i] = 0;  // clear buckets
            }
            // sales by week
            foreach (var order in orders)
            {
                buckets[WeekOfYear(order.OrderDate.Value)] += (int)order.TotalPrice;
            }

            // create cumulative values
            runningTotal = 0;
            for (int i = 1; i <= buckets.Count; i++)
            {
                runningTotal += buckets[i];
                buckets[i]    = runningTotal;
            }

            // flot formatting
            var salesData  = new StringBuilder(@"[{ ""label"": ""Sales"", ""color"" : ""#090"", ""data"": [");
            var salesTicks = new StringBuilder("[");

            index = 1;
            foreach (var bucket in buckets)
            {
                salesData.Append("[" + index + ", " + bucket.Value + "],");
                salesTicks.Append("[" + index + @", """ + bucket.Key + @"""],");
                index++;
            }
            salesData  = salesData.Remove(salesData.Length - 1, 1).Append("] }]");
            salesTicks = salesTicks.Remove(salesTicks.Length - 1, 1).Append("]");

            model.SalesData  = salesData.ToString();
            model.SalesTicks = salesTicks.ToString();

            // Demographics of users

            // lightweight query (only includes two columns and data of first 4 months).
            string sql       = "SELECT Country, COUNT(Id) AS Number FROM [User] GROUP BY Country ORDER BY Number DESC";
            var    countries = ArtContext.Query(sql);

            // flot formatting
            var demographics = new StringBuilder("[");

            foreach (var country in countries)
            {
                demographics.Append(@"{ ""label"": """ + country.Country + @""" , ""data"": " + country.Number + " },");
            }

            demographics       = demographics.Remove(demographics.Length - 1, 1).Append("]");
            model.Demographics = demographics.ToString();

            return(View(model));
        }
Пример #17
0
 public UnitOfWork(ArtContext context)
 {
     this.context = context;
 }
Пример #18
0
 public ArtworkController(ArtContext context, ILogger <ArtworkController> log)
 {
     _context = context;
     _log     = log;
 }
Пример #19
0
        static AdhocController()
        {
            // build schema cache (only once)

            schema = new Dictionary <string, List <AdhocColumn> >();

            var sql = @"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
			             WHERE TABLE_NAME NOT LIKE 'aspnet_%'  AND TABLE_NAME NOT LIKE 'webpages_%'
                           AND TABLE_TYPE = 'BASE TABLE'
			             ORDER BY TABLE_NAME"            ;

            var tables = ArtContext.Query(sql);

            foreach (var table in tables)
            {
                var adhocColumns = new List <AdhocColumn>();

                sql = @"SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
			              FROM INFORMATION_SCHEMA.COLUMNS 
			             WHERE TABLE_NAME = '"             + table.TABLE_NAME + @"'";

                var columns = ArtContext.Query(sql);

                foreach (var column in columns)
                {
                    adhocColumns.Add(new AdhocColumn {
                        Name = column.COLUMN_NAME, DataType = column.DATA_TYPE
                    });
                }

                schema.Add(table.TABLE_NAME, adhocColumns);
            }

            builtins = new List <Builtin>();
            builtins.Add(new Builtin
            {
                Id          = "builtin1",
                Text        = "Record Counts",
                Description = "Record counts for all tables in database",
                Sql         =
                    @"SELECT Artists = (SELECT COUNT(Id) FROM [Artist]), 
                             Carts =  (SELECT COUNT(Id) FROM [Cart]),
                             CartItems =  (SELECT COUNT(Id) FROM [CartItem]),
                             Errors =  (SELECT COUNT(Id) FROM [Error]),
                             Orders=  (SELECT COUNT(Id) FROM [Order]),
                             OrderDetails=  (SELECT COUNT(Id) FROM [OrderDetail]),
                             Products=  (SELECT COUNT(Id) FROM [Product]),
                             Ratings=  (SELECT COUNT(Id) FROM [Rating]),
                             Users =  (SELECT COUNT(Id) FROM [User])"
            });
            builtins.Add(new Builtin
            {
                Id          = "builtin2",
                Text        = "Users with Orders",
                Description = "Display Users and all their orders",
                Sql         =
                    @"SELECT U.FirstName, U.LastName,  U.Email, O.OrderDate, 
                                      '$' + CONVERT(varchar, CAST(O.TotalPrice AS Money), 1) AS Total, 
                                      O.OrderNumber
                            FROM [Order] O 
                            JOIN [User] U ON O.UserId = U.Id
                        ORDER BY O.OrderDate DESC"
            });

            builtins.Add(new Builtin
            {
                Id          = "builtin3",
                Text        = "Artists with Products",
                Description = "Display Artists and all their arts works (i.e. products)",
                Sql         =
                    @"SELECT A.FirstName, A.LastName, 
                                    '$' + CONVERT(VARCHAR, CAST(P.Price AS Money), 1) AS Total, 
                                     P.Title
                            FROM [Artist] A JOIN [Product] P ON A.Id = P.ArtistId
                        ORDER BY A.LastName"
            });

            builtins.Add(new Builtin
            {
                Id          = "builtin4",
                Text        = "Update Statistics",
                Description = "Recompute totals and summary statistics in all relevant tables",
                Sql         =

                    @"UPDATE A SET TotalProducts = ISNULL(X.Total,0)
                          FROM [Artist] A
                          LEFT OUTER JOIN (SELECT ArtistId, COUNT(Id) AS Total
                                  FROM [Product] 
                              GROUP BY ArtistId) AS X
                            ON A.Id = X.ArtistId;

                        UPDATE C SET ItemCount = ISNULL(X.Total,0)
                          FROM [Cart] C
                          LEFT OUTER JOIN (SELECT CartId, COUNT(Id) AS Total
                                  FROM [CartItem] 
                              GROUP BY CartId) AS X
                            ON C.Id = X.CartId;

                        UPDATE O SET ItemCount = ISNULL(X.Total,0)
                          FROM [Order] O
                          LEFT OUTER JOIN (SELECT OrderId, COUNT(Id) AS Total
                                  FROM [OrderDetail] 
                              GROUP BY OrderId) AS X
                            ON O.Id = X.OrderId;

                        UPDATE P SET QuantitySold = ISNULL(X.QSold,0)
                          FROM [Product] P
                          LEFT OUTER JOIN (SELECT ProductId, SUM(Quantity) AS QSold
                                  FROM [OrderDetail] 
                              GROUP BY ProductId) AS X
                            ON P.Id = X.ProductId;

                        UPDATE U SET OrderCount = ISNULL(X.Total,0)
                          FROM [User] U
                          LEFT OUTER JOIN (SELECT UserId, COUNT(Id) AS Total
                                  FROM [Order] 
                              GROUP BY UserId) AS X
                            ON U.Id = X.UserId;"
            });
        }
Пример #20
0
 public RestaurantSearchController(ArtContext context, IConfiguration Configuration, ILogger <RestaurantSearchController> log)
 {
     _context       = context;
     _configuration = Configuration;
     _log           = log;
 }
Пример #21
0
 public ArtDBRepo(ArtContext context)
 {
     this.context = context;
 }
Пример #22
0
 public UnidadeMedidaInitializer(ArtContext context)
 {
     this.context = context;
 }
Пример #23
0
 public ArtworksController(ArtContext context)
 {
     _context = context;
 }
Пример #24
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="UnidadeMedidaRepository"/> class.
 ///     Construtor padrão de <see cref="UnidadeMedidaRepository"/>.
 /// </summary>
 /// <param name="context">
 ///     O contexto do repositório. Veja <see cref="ArtContext"/>.
 /// </param>
 public UnidadeMedidaRepository(ArtContext context)
     : base(context)
 {
 }