Exemplo n.º 1
0
        public static string GetValue(string Name, string Default = "")
        {
            string result = MemoryCache.Default.Get(key + Name) as string;

            if (result.IsNotNullOrEmpty())
            {
                return(result);
            }

            BuildingEntities db = new BuildingEntities();
            SystemSetting    ss = db.SystemSettings.FirstOrDefault(val => val.Name == Name);

            if (ss == null)
            {
                ss       = new SystemSetting();
                ss.Name  = Name;
                ss.Value = Default;
                ss.Date  = DateTime.Now;
                ss.Title = Name;
                db.SystemSettings.AddObject(ss);
                db.SaveChanges();
            }

            db.Dispose();
            Default = ss.Value;

            MemoryCache.Default.Add(key + Name, Default, new CacheItemPolicy()
            {
                AbsoluteExpiration = DateTime.Now.AddMinutes(duration)
            });

            return(Default);
        }
Exemplo n.º 2
0
 public static void Write(string text)
 {
     BuildingEntities db = new BuildingEntities();
     UserLog log = new UserLog {Date = DateTime.Now, Text = text};
     db.UserLogs.AddObject(log);
     db.SaveChanges();
 }
Exemplo n.º 3
0
    public static User CurrentUser(this HttpContextBase Context)
    {
        User             user = null;
        BuildingEntities db;

        if (Context.Request.IsAuthenticated)
        {
            user = Context.Session[FormsAuthentication.FormsCookieName] as User;
            if (user == null || !user.RoleReference.IsLoaded)
            {
                using (db = new BuildingEntities())
                {
                    user = db.Users.FirstOrDefault(val => val.Login == Context.User.Identity.Name);
                    if (user != null)
                    {
                        user.RoleReference.Load();
                        Context.Session[FormsAuthentication.FormsCookieName] = user;
                    }
                    else
                    {
                        FormsAuthentication.SignOut();
                        Context.Response.Redirect("~/");
                    }
                }
            }
        }
        return(user);
    }
Exemplo n.º 4
0
        public ActionResult Index()
        {
            User user = HttpContext.CurrentUser();

            int userID = user.ID;

            user = db.Users.FirstOrDefault(val => val.ID == userID);
            string settingsName = "/Incidents/Index";

            BuildingEntities.RepeatIncidentsAsync();

            var data = new
            {
                IncidentTypes   = db.IncidentTypes.Where(val => (!val.Deleted || val.Incidents.Any())).OrderBy(val => val.OrderNumber).ThenBy(val => val.Name).ToList().Select(val => val.ToJson()).ToList(),
                RepeatIntervals = db.RepeatIntervals.Where(val => (!val.Deleted || val.Incidents.Any())).OrderBy(val => val.OrderNumber).ThenBy(val => val.Name).ToList().Select(val => val.ToJson()).ToList(),
                Users           = db.Users.ToList().Select(val => val.ToJson()).ToList(),
                Roles           = db.Roles.ToList().Select(val => val.ToJson()).ToList(),
                User            = user.ToJson(),
                UserSettings    = db.UserSettings.Where(val => val.UserID == userID && val.Name.StartsWith(settingsName)).ToList().Select(val => val.ToJson()).ToList(),
            };

            ViewBag.Data = serializer.Serialize(data);

            return(View());
        }
Exemplo n.º 5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                BuildingEntities db = new BuildingEntities();
                if (Request.Params.AllKeys.Contains("id"))
                {
                    int id = int.Parse(Request.Params["id"]);
                    var obj = db.Posts.FirstOrDefault(s => s.Id == id);
                    if (obj != null)
                    {
                        db.Posts.DeleteObject(obj);
                        db.SaveChanges();
                        LogHelper.Write(string.Format("{0} удалил должность '{1}'", User.Identity.Name, obj.Name));
                    }
                }
            }
            catch (Exception)
            {

            }
            finally
            {
                Response.Redirect("Posts.aspx");
            }
        }
Exemplo n.º 6
0
        public void OnCheckPermissions(EntityJs.Client.Events.CheckPermissionsEventArgs e)
        {
            BuildingEntities db   = (BuildingEntities )e.Context;
            User             user = db.CurrentUser;

            e.Cancel = false;
            if (e.Action != EntityJs.Client.Events.ActionsEnum.Select)
            {
                e.Values.Remove("CreatorID");
                if (user.RoleID != (int)RolesEnum.Admin && user.ID != this.CreatorID)
                {
                    e.Cancel = e.Action == EntityJs.Client.Events.ActionsEnum.Delete;
                    if (e.Action == EntityJs.Client.Events.ActionsEnum.Edit)
                    {
                        var keys = e.Values.Keys.ToList();
                        foreach (var key in keys)
                        {
                            if (key == "StatusID")
                            {
                                continue;
                            }
                            e.Values.Remove(key);
                        }
                    }
                }
            }
        }
Exemplo n.º 7
0
        public static EmailTemplate GetEmailTemplate(string Name)
        {
            string        name   = Name;
            EmailTemplate result = MemoryCache.Default.Get(key + name) as EmailTemplate;

            if (result != null)
            {
                return(result);
            }

            BuildingEntities db = new BuildingEntities();
            EmailTemplate    et = db.EmailTemplates.FirstOrDefault(val => val.SysName == name);

            if (et == null)
            {
                User user = db.CurrentUser;
                et            = new EmailTemplate();
                et.SysName    = Name;
                et.Name       = Name;
                et.CreateDate = DateTime.Now;
                et.Creator    = user != null ? user.Login : "******";
                db.EmailTemplates.AddObject(et);
                db.SaveChanges();
            }
            MemoryCache.Default.Add(key + name, et, new CacheItemPolicy()
            {
                AbsoluteExpiration = DateTime.Now.AddMinutes(duration)
            });

            db.Dispose();

            return(et);
        }
Exemplo n.º 8
0
    public static string SystemSetting(this HtmlHelper htmlHelper, string Name)
    {
        BuildingEntities db      = new BuildingEntities();
        SystemSetting    setting = db.SystemSettings.FirstOrDefault(val => val.Name.ToLower() == Name.ToLower());

        db.Dispose();
        return(setting != null ? setting.Value : null);
    }
Exemplo n.º 9
0
    public static string UserSetting(this HtmlHelper htmlHelper, string Name)
    {
        int UserID               = HttpContext.Current.Request.RequestContext.HttpContext.CurrentUser().ID;
        BuildingEntities db      = new BuildingEntities();
        UserSetting      setting = db.UserSettings.FirstOrDefault(val => val.Name.ToLower() == Name.ToLower() && val.UserID == UserID);

        db.Dispose();
        return(setting != null ? setting.Value : null);
    }
Exemplo n.º 10
0
        private void DeleteProjectExpense(BuildingEntities db)
        {
            List <Expense> rows = db.Expenses.Where(val => val.DispatchID == this.ID).ToList();

            foreach (Expense item in rows)
            {
                db.Expenses.DeleteObject(item);
            }
        }
Exemplo n.º 11
0
        public override ActionResult DownloadFile(string ID, int FileID = -1)
        {
            string[] asImage = new[] { "jpg", "png", "jpeg", "bmp", "gif", "tiff" };
            if (ID.IsNotNullOrEmpty() && HttpContext.Cache[ID] as FileResult != null)
            {
                FileResult f = HttpContext.Cache[ID] as FileResult;
                return(f);
            }

            BuildingEntities db = this.db as BuildingEntities;

            Models.File file = db.Files.FirstOrDefault(val => val.ID == FileID);

            if (file.Name != ID)
            {
                return(new EmptyResult());
            }

            bool   asContent = false;
            string ext       = Path.GetExtension(file.Url).Replace(".", string.Empty);

            if (asImage.Contains(ext))
            {
                asContent            = true;
                Response.ContentType = "image/" + ext;
            }
            else if (ext == "txt")
            {
                asContent            = true;
                Response.ContentType = System.Net.Mime.MediaTypeNames.Text.Plain;
            }
            else if (ext == "pdf")
            {
                asContent            = true;
                Response.ContentType = System.Net.Mime.MediaTypeNames.Application.Pdf;
            }
            else if (ext == "mp3")
            {
                asContent            = true;
                Response.ContentType = "audio/mpeg";
            }

            if (asContent)
            {
                Response.WriteFile(file.RealPath);
                Response.End();
                return(new EmptyResult());
            }

            return(File(file.RealPath, "application/" + ext, ID));
        }
Exemplo n.º 12
0
        protected bool AuthenticateUser(string Login, string Password, bool RememberMe = false)
        {
            FormsIdentity    id;
            GenericPrincipal principal;
            HttpCookie       cookie;
            string           hash;

            Models.User             user;
            Models.BuildingEntities db;
            string shaPassword = string.Empty;
            FormsAuthenticationTicket ticket;

            Models.MembershipProvider mp;

            mp = new Models.MembershipProvider();
            if (mp.ValidateUser(Login, Password))
            {
                using (db = new Models.BuildingEntities())
                {
                    user = db.Users.FirstOrDefault(u => u.Login == Login && !u.Deleted);
                    user.RoleReference.Load();
                    user.LastLoginDate = DateTime.Now;
                    db.SaveChanges();
                }
            }
            else
            {
                return(false);
            }

            FormsAuthentication.Initialize();

            ticket = GetAuthorizationCook(user, RememberMe, out hash);

            cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);

            if (ticket.IsPersistent)
            {
                cookie.Expires = ticket.Expiration;
            }
            cookie.Expires = ticket.Expiration;
            HttpContext.Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
            HttpContext.Response.Cookies.Add(cookie);

            id               = new FormsIdentity(ticket);
            principal        = new GenericPrincipal(id, ticket.UserData.Split('|'));
            HttpContext.User = principal;
            HttpContext.Session[FormsAuthentication.FormsCookieName] = user;

            return(true);
        }
Exemplo n.º 13
0
        public void OnCheckPermissions(EntityJs.Client.Events.CheckPermissionsEventArgs e)
        {
            BuildingEntities db   = (BuildingEntities)e.Context;
            User             user = db.CurrentUser;

            e.Cancel = false;
            if (e.Action != EntityJs.Client.Events.ActionsEnum.Select)
            {
                e.Values.Remove("CreatorID");
                if (user.RoleID != (int)RolesEnum.Admin && user.ID != this.CreatorID && e.Action != EntityJs.Client.Events.ActionsEnum.Insert)
                {
                    e.Cancel = true;
                }
            }
        }
Exemplo n.º 14
0
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            const string path = "report.pdf";
            Document doc = new Document();
            BaseFont baseFont = BaseFont.CreateFont(Request.PhysicalApplicationPath + "arial.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font font = new Font(baseFont, 12, Font.NORMAL);
            PdfWriter.GetInstance(doc, new FileStream(Request.PhysicalApplicationPath + path, FileMode.Create));
            doc.Open();

            BuildingEntities db = new BuildingEntities();
            foreach (var log in db.UserLogs)
                doc.Add(new Paragraph(log.Date + " : " + log.Text, font));

            doc.Close();
            Response.Redirect("~/"+path);
        }
Exemplo n.º 15
0
        public void OnCheckPermissions(EntityJs.Client.Events.CheckPermissionsEventArgs e)
        {
            BuildingEntities db   = (BuildingEntities)e.Context;
            User             user = db.CurrentUser;

            e.Cancel = false;
            if (e.Action != EntityJs.Client.Events.ActionsEnum.Select)
            {
                e.Values.Remove("CreatorID");
                if (user.RoleID != (int)RolesEnum.Admin && this.DispatchID > 0)
                {
                    ProjectDispatchOrder disp = this.ProjectDispatchOrder ?? db.ProjectDispatchOrders.Find(val => val.ID == this.DispatchID).FirstOrDefault();
                    e.Cancel = disp == null || user.ID != disp.CreatorID;
                }
            }
        }
Exemplo n.º 16
0
        public ActionResult DownloadFolder(string ID, int FolderID)
        {
            BuildingEntities  db       = (BuildingEntities)this.db;
            string            fileName = ID + ".zip";
            FileContentResult result;

            Folder folder = db.Folders.FirstOrDefault(val => val.ID == FolderID && val.Name == ID);

            if (folder == null)
            {
                return(HttpNotFound());
            }

            //List<Folder> folders = db.Folders.Where(val => val.ProjectID == folder.ProjectID && val.Level > folder.Level && val.TreeString.StartsWith(folder.TreeString)).ToList();
            List <Models.File> files = db.Files.Include("Folder").Where(val => val.Folder.ProjectID == folder.ProjectID && val.Folder.TreeString.StartsWith(folder.TreeString)).ToList();

            Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile(fileName);
            MemoryStream      ms  = new MemoryStream();

            foreach (Models.File f in files)
            {
                if (System.IO.File.Exists(f.RealPath))
                {
                    string path  = f.Folder == folder ? "" : f.Folder.FullName.Substring(folder.FullName.Length + 1);
                    var    zfile = zip.AddFile(f.RealPath, path);

                    if (zfile.FileName.Contains('/'))
                    {
                        zfile.FileName = zfile.FileName.Substring(0, zfile.FileName.LastIndexOf('/') + 1) + f.Name;
                    }
                    else
                    {
                        zfile.FileName = f.Name;
                    }
                }
            }

            zip.Save(ms);
            result = File(ms.ToArray(), System.Net.Mime.MediaTypeNames.Application.Zip, fileName);

            zip.Dispose();
            ms.Dispose();

            return(result);
        }
Exemplo n.º 17
0
        public static void SetValue(string Name, string Value)
        {
            BuildingEntities db = new BuildingEntities();
            SystemSetting    ss = db.SystemSettings.FirstOrDefault(val => val.Name == Name);

            if (ss == null)
            {
                ss       = new SystemSetting();
                ss.Name  = Name;
                ss.Value = Value;
                ss.Date  = DateTime.Now;
                ss.Title = Name;
                db.SystemSettings.AddObject(ss);
            }

            ss.Value = Value;
            db.SaveChanges();
            db.Dispose();
        }
Exemplo n.º 18
0
        public void OnDeleting(EntityJs.Client.Events.EntityEventArgs e)
        {
            BuildingEntities       db         = (BuildingEntities)e.Context;
            List <ProjectDispatch> dispatches = ProjectDispatches.ToList();

            foreach (ProjectDispatch dispatch in dispatches)
            {
                EntityJs.Client.Events.CheckPermissionsEventArgs eargs = new EntityJs.Client.Events.CheckPermissionsEventArgs(db, "ProjectDispatches", "ProjectDispatch", dispatch, EntityJs.Client.Events.ActionsEnum.Delete);
                dispatch.OnDeleting(eargs);
                if (eargs.Result != OperationResultsEnum.Passed)
                {
                    var cpe = ((EntityJs.Client.Events.CheckPermissionsEventArgs)e);
                    cpe.Result = eargs.Result;
                    cpe.Errors.AddRange(eargs.Errors);
                    break;
                }
                db.ProjectDispatches.DeleteObject(dispatch);
            }
        }
Exemplo n.º 19
0
        public ActionResult FilesBackup()
        {
            //string upfolder = UploadedFilesFolder;
            //string genfolder = "GeneratedFiles";
            BuildingEntities  db       = (BuildingEntities)this.db;
            string            fileName = "FilesBackup_" + DateTime.Now.ToString("yyyyMMdd") + ".zip";
            FileContentResult result;

            List <AdCrm.Models.File> projectFiles    = db.ProjectFiles.Where(val => !val.Project.Deleted).Select(val => val.File).ToList();
            List <AdCrm.Models.File> contractorFiles = db.ContractorFiles.Where(val => !val.Contractor.Deleted).Select(val => val.File).ToList();

            //upfolder = Path.Combine(HttpRuntime.AppDomainAppPath, upfolder);
            //genfolder = Path.Combine(HttpRuntime.AppDomainAppPath, genfolder);

            Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile(fileName);
            MemoryStream      ms  = new MemoryStream();

            foreach (var f in projectFiles)
            {
                if (System.IO.File.Exists(f.RealPath))
                {
                    string folder = Path.GetDirectoryName(f.Url);
                    zip.AddFile(f.RealPath, folder);
                }
            }
            foreach (var f in contractorFiles)
            {
                if (System.IO.File.Exists(f.RealPath))
                {
                    string folder = Path.GetDirectoryName(f.Url);
                    zip.AddFile(f.RealPath, folder);
                }
            }

            zip.Save(ms);
            result = File(ms.ToArray(), System.Net.Mime.MediaTypeNames.Application.Zip, fileName);

            zip.Dispose();
            ms.Dispose();

            return(result);
        }
Exemplo n.º 20
0
        public override JsonResult SaveUserSettings(string Name, string Value)
        {
            BuildingEntities db   = this.db as BuildingEntities;
            User             user = HttpContext.CurrentUser();
            int userID            = user.ID;

            Models.UserSetting setting = db.UserSettings.FirstOrDefault(val => val.Name == Name && val.UserID == userID);

            if (setting == null)
            {
                setting        = new UserSetting();
                setting.Name   = Name;
                setting.UserID = userID;
                db.UserSettings.AddObject(setting);
            }

            setting.Value = Value;
            db.SaveChanges();

            return(Json(setting.ToJson()));
        }
Exemplo n.º 21
0
 public override string[] GetRolesForUser(string username)
 {
     BuildingEntities db = new BuildingEntities();
     User user = db.Users.FirstOrDefault(s => s.Login == username);
     return user != null && user.IsAdmin ? new string[] { "Admin" } : new string[0];
 }
Exemplo n.º 22
0
        public ActionResult UploadToTask(int ProjectID, int?TaskID, string TaskName)
        {
            BuildingEntities db   = (BuildingEntities)this.db;
            User             user = HttpContext.CurrentUser();

            if (Request.Files.Count < 1)
            {
                return(Json(new { Code = 202, Success = false, Message = "No files uploaded!" }));
            }

            Project project = db.Projects.FirstOrDefault(val => val.ID == ProjectID);

            if (project == null)
            {
                return(Json(new { Code = 202, Success = false, Message = "Project not found!" }));
            }

            CheckPermissionsEventArgs e = new CheckPermissionsEventArgs(db, "Projects", "Project", project, EntityJs.Client.Events.ActionsEnum.Select);

            project.OnCheckPermissions(e);
            if (e.Cancel)
            {
                return(Json(new { Code = 202, Success = false, Message = "You can't operate with this project!" }));
            }

            ProjectTask task = null;

            if (TaskID > 0)
            {
                task = db.ProjectTasks.FirstOrDefault(val => val.ID == TaskID);
                if (task == null)
                {
                    return(Json(new { Code = 202, Success = false, Message = "Task not found!" }));
                }

                e = new CheckPermissionsEventArgs(db, "ProjectTasks", "ProjectTask", task, EntityJs.Client.Events.ActionsEnum.Edit);
                task.OnCheckPermissions(e);
                if (e.Cancel)
                {
                    return(Json(new { Code = 202, Success = false, Message = "You can't edit this task!" }));
                }
            }

            int              code;
            string           message;
            UploadFileHelper helper = new UploadFileHelper(this.db as BuildingEntities);

            Folder folder = helper.GetFolder(project, TaskName, true);

            Models.File        file  = helper.UploadFiles(-1, folder.ID, out code, out message, false);
            Models.ProjectFile pfile = file != null?file.ProjectFiles.FirstOrDefault(val => val.ProjectID == ProjectID) : null;

            if (pfile != null)
            {
                pfile.ProjectTask = task;
                db.SaveChanges();
            }
            var data = new { Code = code, Message = message, File = file != null?file.ToJson() : null, ProjectFile = pfile != null?pfile.ToJson() : null };

            return(this.Json(data));
        }
Exemplo n.º 23
0
        private bool UpdateProjectExpense(BuildingEntities db)
        {
            DateTime    date         = DateTime.Now;
            int         userID       = db.CurrentUser.ID;
            ExpenseType dispatchType = db.ExpenseTypes.Where(val => val.SysName == "dispatch").FirstOrDefault();

            if (dispatchType == null)
            {
                return(false);
            }

            Wallet storeWallet = dispatchType.Wallet;

            if (storeWallet == null)
            {
                return(false);
            }

            List <Expense> rows = db.Expenses.Where(val => val.DispatchID == this.ID).ToList();

            if (!rows.Any())
            {
                Expense row = new Expense()
                {
                    ChangeDate      = date,
                    ChangerID       = userID,
                    Count           = 1,
                    CreateDate      = date,
                    CreatorID       = userID,
                    Date            = date,
                    DispatchID      = this.ID,
                    ProjectDispatch = this,
                    //EmployeeID = this.EmployeeID,
                    Name      = this.Name,
                    Comments  = this.Comments,
                    Price     = this.Amount,
                    ProjectID = this.ProjectID,
                    Sum       = this.Amount,
                    PeriodSum = this.Amount,
                    Type      = dispatchType,
                    Wallet    = storeWallet
                };
                rows.Add(row);
                db.Expenses.AddObject(row);
                row.OnInserted(new EntityJs.Client.Events.EntityEventArgs(db, "Expenses", "Expense", row, EntityJs.Client.Events.ActionsEnum.Insert));
            }
            else
            {
                Expense row = rows.First();
                row.Sum       = Amount;
                row.PeriodSum = this.Amount;
                row.ProjectID = ProjectID;
                //row.EmployeeID = EmployeeID;
                row.Price      = Amount;
                row.Date       = Date;
                row.Name       = Name;
                row.Comments   = Comments;
                row.ChangeDate = date;
                row.ChangerID  = userID;
                row.OnUpdated(new EntityJs.Client.Events.EntityEventArgs(db, "Expenses", "Expense", row, EntityJs.Client.Events.ActionsEnum.Edit));
                foreach (Expense item in rows.Skip(1))
                {
                    db.Expenses.DeleteObject(item);
                }
            }
            return(true);
        }
Exemplo n.º 24
0
        public override void ImageThumbnail(string ID, int FileID, int Width = 100)
        {
            string ImageThumbCacheKey = "ImageThumbCacheKey";
            int    cacheDurationMins  = 30;

            string[] imgExtensions = new[] { ".jpg", ".png", ".bmp", ".jpeg" };
            string[] docExtensions = new[] { ".doc", ".docx", ".odt" };
            string[] xlsExtensions = new[] { ".xls", ".xlsx", ".ods" };
            System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();
            System.Drawing.Imaging.EncoderParameter  encoderParam  = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)120);
            encoderParams.Param = new System.Drawing.Imaging.EncoderParameter[] { encoderParam };

            string imgKey  = string.Format(ImageThumbCacheKey, ID, Width);
            string pathKey = string.Format(ImageThumbCacheKey, ID, Width);

            byte[]           imageBytes = null;
            string           mappedPath = HttpContext.Cache[pathKey] as string;
            BuildingEntities db         = this.db as BuildingEntities;

            Models.File image = db.Files.FirstOrDefault(val => val.ID == FileID && val.Name == ID);
            string      realPath, virtualPath;

            System.Drawing.Bitmap bmp, thumb;
            MemoryStream          ms;

            if (image == null)
            {
                return;
            }

            realPath    = image.RealPath;
            virtualPath = image.VirtualPath;

            FileInfo fi = new FileInfo(realPath);

            if (!fi.Exists)
            {
                return;
            }

            if (docExtensions.Contains(fi.Extension))
            {
                realPath = Path.Combine(HttpRuntime.AppDomainAppPath, "Content/Images/Icons/Big/document.png");
            }
            else if (xlsExtensions.Contains(fi.Extension))
            {
                realPath = Path.Combine(HttpRuntime.AppDomainAppPath, "Content/Images/Icons/Big/excel_document.png");
            }
            else if (fi.Extension == ".pdf")
            {
                realPath = Path.Combine(HttpRuntime.AppDomainAppPath, "Content/Images/Icons/Big/pdf_document.png");
            }
            else if (!imgExtensions.Contains(fi.Extension))
            {
                realPath = Path.Combine(HttpRuntime.AppDomainAppPath, "Content/Images/Icons/Big/photo_album.png");
            }

            bmp   = new System.Drawing.Bitmap(realPath);
            thumb = global::Helpers.ImageHelper.CreateThumbnailImage(bmp, Width);
            bmp.Dispose();

            ms = new MemoryStream();
            thumb.Save(ms, global::Helpers.ImageHelper.GetImageEncoder(realPath), encoderParams);
            bmp.Dispose();
            thumb.Dispose();
            ms.Flush();

            mappedPath = HttpContext.Server.MapPath("~/" + virtualPath);
            imageBytes = ms.ToArray();
            ms.Dispose();

            HttpContext.Cache.Insert(imgKey, imageBytes, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(cacheDurationMins));
            HttpContext.Cache.Insert(pathKey, mappedPath, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(cacheDurationMins));

            ReturnImage(mappedPath, imageBytes);
        }
Exemplo n.º 25
0
 public TasksWorker(BuildingEntities db)
 {
     this.db = db;
 }
Exemplo n.º 26
0
        public ActionResult DownloadFiles(int ID, string Folders, string Files)
        {
            User              user   = HttpContext.CurrentUser();
            int               userID = user.ID;
            BuildingEntities  db     = (BuildingEntities)this.db;
            FileContentResult result;

            Project project = db.Projects.FirstOrDefault(val => val.ID == ID && !val.Deleted);

            if (!Available(project))
            {
                ViewBag.Error = "Forbidden";
                return(View("Error"));
            }

            int[] folderIDs = Folders.StringAndTrim().Split(',').Select(val => val.ToIntOrDefault()).Where(val => val.HasValue).Select(val => val.Value).ToArray();
            int[] filesIDs  = Files.StringAndTrim().Split(',').Select(val => val.ToIntOrDefault()).Where(val => val.HasValue).Select(val => val.Value).ToArray();

            string fileName = project.Name.Replace(System.IO.Path.GetInvalidFileNameChars(), "_") + ".zip";

            Ionic.Zip.ZipFile      zip = new Ionic.Zip.ZipFile(fileName);
            System.IO.MemoryStream ms  = new System.IO.MemoryStream();

            if (Folders != null && Folders.Any())
            {
                List <Folder> folders = db.Folders.Where(val => val.ProjectID == ID && folderIDs.Contains(val.ID)).ToList();
                foreach (Folder folder in folders)
                {
                    List <Models.File> files = db.Files.Include("Folder").Where(val => val.Folder.ProjectID == folder.ProjectID && val.Folder.TreeString.StartsWith(folder.TreeString)).ToList();
                    foreach (Models.File f in files)
                    {
                        if (System.IO.File.Exists(f.RealPath))
                        {
                            string trim  = folder.FullName.Contains('/') ? folder.FullName.Substring(0, folder.FullName.LastIndexOf('/') + 1) : string.Empty;
                            string path  = trim.Length > 0 ? f.Folder.FullName.Substring(trim.Length) : f.Folder.FullName;
                            var    zfile = zip.AddFile(f.RealPath, path);

                            if (zfile.FileName.Contains('/'))
                            {
                                zfile.FileName = zfile.FileName.Substring(0, zfile.FileName.LastIndexOf('/') + 1) + f.Name;
                            }
                            else
                            {
                                zfile.FileName = f.Name;
                            }
                        }
                    }
                }
            }
            if (Files != null && Files.Any())
            {
                List <Models.File> files = db.Files.Include("Folder").Where(val => val.Folder.ProjectID == ID && filesIDs.Contains(val.ID)).ToList();

                foreach (Models.File f in files)
                {
                    if (System.IO.File.Exists(f.RealPath))
                    {
                        string path  = string.Empty;
                        var    zfile = zip.AddFile(f.RealPath, path);

                        if (zfile.FileName.Contains('/'))
                        {
                            zfile.FileName = zfile.FileName.Substring(0, zfile.FileName.LastIndexOf('/') + 1) + f.Name;
                        }
                        else
                        {
                            zfile.FileName = f.Name;
                        }
                    }
                }
            }

            zip.Save(ms);
            result = File(ms.ToArray(), System.Net.Mime.MediaTypeNames.Application.Zip, fileName);

            zip.Dispose();
            ms.Dispose();

            return(result);
        }
 public override bool ValidateUser(string username, string password)
 {
     BuildingEntities db = new BuildingEntities();
     User user = db.Users.FirstOrDefault(s => s.Login == username);
     return (user != null) && (user.Password == password) &&(user.IsAllow);
 }
Exemplo n.º 28
0
        public Models.File UploadFiles(int FileID, int?FolderID, out int Code, out string Message, bool Watermark = true)
        {
            HttpRequest Request = HttpContext.Current.Request;
            User        user    = Request.RequestContext.HttpContext.CurrentUser();

            if (Request.Files.Count < 1)
            {
                Code    = 202;
                Message = "No file posted.";
                return(null);
            }
            BuildingEntities db   = this.db as BuildingEntities;
            HttpPostedFile   item = Request.Files[0];

            Models.File   file = null;
            Models.Folder folder = null;
            string        path, folderName = "UploadedFiles";
            string        fname = item.FileName.ToLower();

            if (fname == "image_file")
            {
                fname = string.Format("img_{0:yyyyMMddHHmmss}.png", DateTime.Now);
            }
            string ext = System.IO.Path.GetExtension(fname).Replace(".", string.Empty).ToLower();
            //FileType ft = db.FileTypes.FirstOrDefault(val => val.Allow && val.Extension.Contains(ext) && val.Watermark == Watermark);
            //ft = ft ?? db.FileTypes.FirstOrDefault(val => val.Allow && val.Extension.Contains(ext));
            DirectoryInfo di;

            if (user == null)
            {
                user = db.Users.FirstOrDefault(val => val.RoleID == (int)RolesEnum.Admin);
            }

            if (FolderID > 0)
            {
                folder = db.Folders.FirstOrDefault(val => val.ID == FolderID);
                if (folder == null)
                {
                    Code    = 202;
                    Message = "Invalid folder";
                    return(null);
                }
                if (folder.Url.IsNullOrEmpty())
                {
                    folder.FillUrl();
                }
                folderName = folder.Url;
            }

            //if (ft == null)
            //{
            //    Code = 202;
            //    Message = "Incorrect extension";
            //    return null;
            //}

            //if (ft.MaxSize > 0 && ft.MaxSize * 1024 < item.ContentLength)
            //{
            //    Code = 202;
            //    Message = "Incorrect size";
            //    return null;
            //}

            if (FileID > 0)
            {
                file = db.Files.FirstOrDefault(val => val.ID == FileID);
            }

            if (file == null)
            {
                file = new Models.File();
                db.Files.AddObject(file);
            }
            else
            {
                file.RemoveFile();
            }

            path = string.Format("{0}/{1}", HttpRuntime.AppDomainAppPath, folderName);
            di   = new DirectoryInfo(path);

            if (!di.Exists)
            {
                di.Create();
            }

            file.Name = fname;
            file.Url  = string.Format("{0}/{1}", folderName, this.GetNextFileName(fname, path));
            //file.TypeID = ft.ID;
            file.CreateDate = file.ChangeDate = DateTime.Now;
            file.CreatorID  = file.ChangerID = user.ID;
            if (FolderID > 0)
            {
                file.FolderID = FolderID;
            }
            if (folder != null && folder.ProjectID.HasValue)
            {
                ProjectFile pfile = new ProjectFile()
                {
                    File = file, ProjectID = folder.ProjectID.Value
                };
                db.ProjectFiles.AddObject(pfile);

                List <int?> taskIDs = db.ProjectFiles.Where(val => val.File.FolderID == folder.ID).Select(val => val.ProjectTaskID).Distinct().ToList();
                if (taskIDs.Count == 1)
                {
                    pfile.ProjectTaskID = taskIDs.First();
                }
            }
            path = file.RealPath;

            //if (Watermark && ft.Watermark)
            //{
            //    string wpath = Settings.WatermarkImage;
            //    wpath = wpath.StartsWith("/") ? Path.Combine(HttpRuntime.AppDomainAppPath, wpath.Trim('/')) : wpath;
            //    var bmp3 = new System.Drawing.Bitmap(wpath);

            //    MemoryStream ms = new MemoryStream();
            //    Helpers.ImageHelper.AddWaterMarkCenter(item.InputStream, bmp3, ms);
            //    ms.Flush();

            //    var bmp1 = new System.Drawing.Bitmap(ms);
            //    Helpers.ImageHelper.CreateThumbnailImage(bmp1, path, 1024, -1, -1, 70);
            //    bmp1.Dispose();

            //    ms.Dispose();

            //    bmp3.Dispose();

            //    path = Path.Combine(ft.Folder, this.GetNextFileName(item.FileName, folder));
            //    file.OriginUrl = path.Replace('\\', '/');
            //    path = file.OriginPath;
            //}

            //if (ext == "jpg" || ext == "png")
            //{
            //    try
            //    {
            //        var bmp1 = new System.Drawing.Bitmap(item.InputStream);
            //        Helpers.ImageHelper.CreateThumbnailImage(bmp1, path, 1024, -1, -1, 70);
            //        bmp1.Dispose();
            //    }
            //    catch
            //    {
            //        item.SaveAs(path);
            //    }
            //}
            //else
            //{
            item.SaveAs(path);
            //}

            db.SaveChanges();

            Code    = 200;
            Message = string.Empty;

            return(file);
        }
Exemplo n.º 29
0
 public UploadFileHelper(BuildingEntities DB)
 {
     this.db = DB;
 }