Beispiel #1
0
        public override async Task <IActionResult> PostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(View(this));
            }

            if (Id == 0) // new item
            {
                var project = _mapper.Map <Project>(this);
                project.CreatedDate = DateTime.Now;

                _db.Project.Add(project);
                await _db.SaveChangesAsync();

                await SettleInsertAsync(project);
            }
            else
            {
                var project = await _db.Project.SingleOrDefaultAsync(c => c.Id == Id);

                var originalProject = new OriginalProject(project);

                _mapper.Map(this, project);

                _db.Project.Update(project);
                await _db.SaveChangesAsync();

                await SettleUpdateAsync(originalProject, project);
            }

            return(LocalRedirect(Referer ?? "/projects"));
        }
Beispiel #2
0
        private async Task SettleUpdateAsync(OriginalProject original, Project project)
        {
            _cache.MergeProject(project);

            if (original.OwnerId != project.OwnerId)
            {
                await _rollup.RollupUserAsync(original.OwnerId);

                await _rollup.RollupUserAsync(project.OwnerId);
            }
        }