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); }
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(); }
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); }
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()); }
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"); } }
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); } } } } }
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); }
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); }
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); }
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); } }
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)); }
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); }
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; } } }
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); }
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; } } }
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); }
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(); }
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); } }
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); }
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())); }
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]; }
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)); }
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); }
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); }
public TasksWorker(BuildingEntities db) { this.db = db; }
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); }
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); }
public UploadFileHelper(BuildingEntities DB) { this.db = DB; }