示例#1
0
        // 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));
        }
示例#2
0
        // 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));
        }
示例#3
0
        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 }));
        }
示例#4
0
        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));
        }