// GET: CompanySegments/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } _user = _context.User.FirstOrDefault(p => p.EmailAddress == _userManager.GetUserAsync(User).GetAwaiter().GetResult().Email); _cpy = _context.Company.FirstOrDefaultAsync(m => m.ID == _user.CompanyID).GetAwaiter().GetResult(); var companySegment = await _context.CompanySegment.FindAsync(id); if (companySegment == null) { return(NotFound()); } CompanySegmentViewModel s = new CompanySegmentViewModel(); s.Order = companySegment.Order; s.Title = companySegment.Title; s.PublishDate = companySegment.PublishDate; s.FinishDate = companySegment.FinishDate; s.StandardColor = companySegment.StandardColor; s.ThemeColor = companySegment.ThemeColor; s.ClientName = (companySegment.ClientName ?? _user.Name); // s.ClientLogoImage = FormFileHelper.PhysicalToIFormFile(new FileInfo(companySegment.ClientLogoImage)); s.Department = companySegment.Department; s.Tags = companySegment.Tags; DataAccessLayer dla = new DataAccessLayer(_context); s.Departments = dla.GetDepartments(_user.CompanyID); return(View(s)); }
// GET: CompanySegments/Create public IActionResult Create() { _user = _context.User.FirstOrDefault(p => p.EmailAddress == _userManager.GetUserAsync(User).GetAwaiter().GetResult().Email); _cpy = _context.Company.FirstOrDefaultAsync(m => m.ID == _user.CompanyID).GetAwaiter().GetResult(); CompanySegmentViewModel s = new CompanySegmentViewModel(); s.Order = 1; s.PublishDate = DateTime.Now.Date; s.FinishDate = DateTime.Now.AddYears(10).Date; s.StandardColor = HttpContext.Session.GetString("CompanyHeaderBackgroundColor"); s.ThemeColor = HttpContext.Session.GetString("CompanyHighlightColor"); s.ClientName = _user.Name; //s.ClientLogoImage = _user.photoUrl; var cp = _user.CompanyID; DataAccessLayer dla = new DataAccessLayer(_context); s.Departments = dla.GetDepartments(cp); return(View(s)); }
public async Task <IActionResult> Edit(int id, CompanySegmentViewModel cps) { if (id != cps.ID) { return(NotFound()); } _user = _context.User.FirstOrDefault(p => p.EmailAddress == _userManager.GetUserAsync(User).GetAwaiter().GetResult().Email); _cpy = _context.Company.FirstOrDefaultAsync(m => m.ID == _user.CompanyID).GetAwaiter().GetResult(); //Initialise a new companysegment CompanySegment mySegment = await _context.CompanySegment.FindAsync(id); //Have to check the Segment title isn't already used - it gets weird otherwise var existingSeg = _context.SegmentArticle.FirstOrDefault(n => n.Title == cps.Title && n.CompanyID == cps.CompanyID); if (existingSeg == null) { if (ModelState.IsValid) { //ID,Order,Title,CoverImage,CoverImageMobileFriendly,PublishDate,FinishDate,ClientName,ClientLogoImage,ThemeColor,StandardColor,Draft,Department,Tags mySegment.CompanyID = _user.CompanyID; mySegment.PublishDate = cps.PublishDate; mySegment.FinishDate = cps.FinishDate; mySegment.ClientName = cps.ClientName; mySegment.ThemeColor = cps.ThemeColor; mySegment.StandardColor = cps.StandardColor; mySegment.Draft = DateTime.Now > cps.PublishDate ? false : true; mySegment.Department = cps.Department; mySegment.Tags = cps.Tags; IFormFile coverImage = cps.CoverImage; if (coverImage != null) { await _dla.UploadFileToS3(coverImage, _user.CompanyName + "_" + coverImage.FileName, "images/Uploads"); mySegment.CoverImage = coverImage.FileName; } IFormFile coverImageMB = cps.CoverImageMobileFriendly; if (coverImageMB != null) { await _dla.UploadFileToS3(coverImageMB, _user.CompanyName + "_" + coverImageMB.FileName, "images/Uploads"); //The file has been saved to disk - now save the file name to the DB mySegment.CoverImageMobileFriendly = coverImageMB.FileName; } IFormFile cli = cps.ClientLogoImage; if (cli != null) { await _dla.UploadFileToS3(cli, _user.CompanyName + "_" + cli.FileName, "images/Uploads"); //The file has been saved to disk - now save the file name to the DB mySegment.CoverImageMobileFriendly = cli.FileName; } try { // Done later to avoid ordering failures if the image upload fails. if (mySegment.Order != 1) { // We only need to decrement articles above it (lower order) InsertAtOrder1(mySegment.Order ?? 1); } mySegment.Order = 1; // Ok but what about the connected articles? We need to update every article segments field and change the old val to the new // If the title changed if (mySegment.Title != cps.Title) { foreach (var art in _context.SegmentArticle.Where(m => m.CompanyID == _user.CompanyID)) { if (art.Segments.Contains(mySegment.Title)) { var oldSegments = art.Segments; var newSegments = oldSegments.Replace(mySegment.Title, cps.Title); art.Segments = newSegments; _context.Update(art); } } } mySegment.Title = cps.Title; _context.Update(mySegment); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CompanySegmentExists(cps.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } } else { // Article title already exists ModelState.AddModelError(string.Empty, "Magazine Title already exists - please choose something unique"); } return(RedirectToAction("Edit", new { id = cps.ID })); }
public async Task <IActionResult> Create(CompanySegmentViewModel cps) { _user = _context.User.FirstOrDefault(p => p.EmailAddress == _userManager.GetUserAsync(User).GetAwaiter().GetResult().Email); _cpy = _context.Company.FirstOrDefaultAsync(m => m.ID == _user.CompanyID).GetAwaiter().GetResult(); var companyID = _cpy.ID; //Initialise a new companysegment var mySegment = new CompanySegment(); if (ModelState.IsValid) { //ID,Order,Title,CoverImage,CoverImageMobileFriendly,PublishDate,FinishDate,ClientName,ClientLogoImage,ThemeColor,StandardColor,Draft,Department,Tags mySegment.CompanyID = companyID; mySegment.Order = cps.Order ?? 1; mySegment.Title = cps.Title; mySegment.PublishDate = cps.PublishDate; mySegment.FinishDate = cps.FinishDate; mySegment.ClientName = cps.ClientName; mySegment.ThemeColor = cps.ThemeColor; mySegment.StandardColor = cps.StandardColor; mySegment.Draft = DateTime.Now > cps.PublishDate ? false : true; mySegment.Department = cps.Department; mySegment.Tags = cps.Tags; mySegment.ClientName = cps.ClientName ?? _user.Name; IFormFile coverImage = cps.CoverImage; if (coverImage != null) { await _dla.UploadFileToS3(coverImage, _user.CompanyName + "_" + coverImage.FileName, "images/Uploads"); mySegment.CoverImage = coverImage.FileName; } IFormFile coverImageMB = cps.CoverImageMobileFriendly; if (coverImageMB != null) { await _dla.UploadFileToS3(coverImageMB, _user.CompanyName + "_" + coverImageMB.FileName, "images/Uploads"); //var filePath = Path.Combine(_rootpath, "images/Uploads", _user.companyName + "_" + coverImageMB.FileName); //using (var stream = new FileStream(filePath, FileMode.Create)) //{ // await coverImageMB.CopyToAsync(stream); //} //The file has been saved to disk - now save the file name to the DB mySegment.CoverImageMobileFriendly = coverImageMB.FileName; } IFormFile cli = cps.ClientLogoImage; if (cli != null) { await _dla.UploadFileToS3(cli, _user.CompanyName + "_" + cli.FileName, "images/Uploads"); //The file has been saved to disk - now save the file name to the DB mySegment.CoverImageMobileFriendly = cli.FileName; } InsertAtOrder1(); _context.Add(mySegment); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } DataAccessLayer dla = new DataAccessLayer(_context); cps.Departments = dla.GetDepartments(companyID); return(View(cps)); }