public async Task <ActionResult <CompanyTag> > PostCompanyTag(CompanyTag companyTag)
        {
            _context.CompanyTags.Add(companyTag);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetCompanyTag", new { id = companyTag.CompanyTagID }, companyTag));
        }
        public async Task <IActionResult> PutCompanyTag(long id, CompanyTag companyTag)
        {
            if (id != companyTag.CompanyTagID)
            {
                return(BadRequest());
            }

            _context.Entry(companyTag).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CompanyTagExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Ejemplo n.º 3
0
        // GET: /Company/Create

        public void SaveTags(Company ad)
        {
            string s = Request["tags"];

            string[] values = s.Split(',');
            Inspinia_MVC5_SeedProject.Models.Tag[] tags = new Inspinia_MVC5_SeedProject.Models.Tag[values.Length];
            CompanyTag[] qt = new CompanyTag[values.Length];
            for (int i = 0; i < values.Length; i++)
            {
                values[i] = values[i].Trim();
                string ss = values[i];
                if (ss != "")
                {
                    var data = db.Tags.FirstOrDefault(x => x.name.Equals(ss, StringComparison.OrdinalIgnoreCase));

                    tags[i] = new Inspinia_MVC5_SeedProject.Models.Tag();
                    if (data != null)
                    {
                        tags[i].Id = data.Id;
                    }
                    else
                    {
                        tags[i].name      = values[i];
                        tags[i].time      = DateTime.UtcNow;
                        tags[i].createdBy = User.Identity.GetUserId();
                        db.Tags.Add(tags[i]);
                    }
                }
                else
                {
                    tags[i] = null;
                }
            }
            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                string sb = e.ToString();
            }
            for (int i = 0; i < values.Length; i++)
            {
                if (tags[i] != null)
                {
                    qt[i]           = new CompanyTag();
                    qt[i].companyId = ad.Id;
                    qt[i].tagId     = tags[i].Id;
                    db.CompanyTags.Add(qt[i]);
                }
            }
        }
Ejemplo n.º 4
0
        public ActionResult AddCompanyTag(CompanyTagsVM model)
        {
            var user  = User as MPrincipal;
            var login = user.UserDetails.Login;

            ViewBag.UserName = login;
            ViewBag.UserRole = 4;
            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                var        company = db.Companies.SingleOrDefault(x => x.Login == login);
                CompanyTag cTag    = new CompanyTag()
                {
                    CompanyId = company.Id,
                    TagId     = Convert.ToInt32(model.SelectedTagId)
                };
                db.CompanyTags.Add(cTag);
                db.SaveChanges();
            }
            return(RedirectToAction("CompanyTagsList"));
        }
Ejemplo n.º 5
0
        public async Task Update(MTask entityToUpdate)
        {
            var task = await FindById(entityToUpdate.TaskId);

            if (task is null)
            {
                throw new ArgumentException("Task with the specified ID not found!!!");
            }

            _context.Tasks.Attach(task);

            foreach (var file in task.AttachedFiles)
            {
                // если в списке отсутствует прикрепленный файл то удаляем его из списка прикрепленных
                if (entityToUpdate.AttachedFiles.FirstOrDefault(f => f.AttachedFileId == file.AttachedFileId) is null)
                {
                    var attachedFile = await _context.AttachedFiles.FirstOrDefaultAsync(f => f.AttachedFileId == file.AttachedFileId);

                    _context.AttachedFiles.Remove(attachedFile);

                    var taskAttachedFile = await _context.TaskAttachedFiles.FirstOrDefaultAsync(f => f.AttachedFileId == file.AttachedFileId);

                    _context.TaskAttachedFiles.Remove(taskAttachedFile);
                }
            }

            foreach (var file in entityToUpdate.AttachedFiles)
            {
                if (file.AttachedFileId <= 0)
                {
                    file.Task = task;
                    task.AttachedFiles.Add(file);
                }
            }

            task.Name        = entityToUpdate.Name;
            task.Body        = entityToUpdate.Body;
            task.Deadline    = entityToUpdate.Deadline;
            task.IsImportant = entityToUpdate.IsImportant;

            task.CoExecutors.Clear();
            task.CoExecutors = entityToUpdate.CoExecutors;

            task.Observers.Clear();
            task.Observers = entityToUpdate.Observers;

            task.ResponsiblesForExecution.Clear();
            task.ResponsiblesForExecution = entityToUpdate.ResponsiblesForExecution;


            if (entityToUpdate.TaskTags != null)
            {
                foreach (var taskTag in task.TaskTags)
                {
                    // Находим тег в БД
                    var tag = await _context.Tags.FirstOrDefaultAsync(t => t.TagId == taskTag.TagId);

                    int taskCount    = _context.TaskTags.Where(t => t.TagId == taskTag.TagId).Count();
                    int companyCount = _context.CompanyTags.Where(t => t.TagId == taskTag.TagId).Count();

                    // Если у тега есть только одна связь с текущей задачей
                    // и одна связь с компанией
                    // и при обновлении этот тег не используется
                    // то удаляем этот тег
                    if (taskCount <= 1 &&
                        companyCount <= 1 &&
                        taskTag.TaskId == entityToUpdate.TaskId &&
                        entityToUpdate.TaskTags.FirstOrDefault(t => t.Tag.Name.Equals(tag.Name)) is null)
                    {
                        TaskTag searchTaskTag = await _context.TaskTags.FirstOrDefaultAsync(t => t.Id == taskTag.Id);

                        if (searchTaskTag != null)
                        {
                            _context.TaskTags.Remove(searchTaskTag);
                        }

                        CompanyTag companyTag = await _context.CompanyTags.FirstOrDefaultAsync(t => t.TagId == taskTag.TagId);

                        _context.Tags.Remove(tag);
                    }
                    else
                    {
                        _context.TaskTags.Remove(taskTag);
                    }
                }

                await _context.SaveChangesAsync();

                task.TaskTags.Clear();

                for (int i = 0; i < entityToUpdate.TaskTags.Count; i++)
                {
                    // Ищем тег
                    var tag = await _context.Tags.FirstOrDefaultAsync(t => t.Name.ToLower().Equals(entityToUpdate.TaskTags[i].Tag.Name.ToLower()));

                    // Если тег найден
                    if (tag != null)
                    {
                        // Связываем тег с задачей
                        task.TaskTags.Add(new TaskTag
                        {
                            TagId  = tag.TagId,
                            TaskId = task.TaskId
                        });
                    }
                    else
                    {
                        task.TaskTags.Add(entityToUpdate.TaskTags[i]);
                    }

                    var companyTag = await _context.CompanyTags.FirstOrDefaultAsync(ct => ct.CompanyId == task.Company.CompanyId && ct.TagId == tag.TagId);

                    // Если указанный тег не связан с текущей компанией то тогда связываем их
                    if (companyTag is null)
                    {
                        await _context.CompanyTags.AddAsync(new CompanyTag
                        {
                            CompanyId = task.Company.CompanyId,
                            TagId     = tag.TagId
                        });
                    }
                }
            }

            await _context.SaveChangesAsync();
        }
Ejemplo n.º 6
0
        public async Task <object> UpdateTags(string s, int companyId)
        {
            var com = await db.Companies.Include("CompanyTags").FirstOrDefaultAsync(x => x.Id.Equals(companyId));

            var temp = com.CompanyTags.ToList();

            foreach (var cc in temp)
            {
                db.CompanyTags.Remove(cc);
            }

            await db.SaveChangesAsync();

            if (s == null || s == "" || s == "undefined")
            {
                return(-1);
            }
            string[]     values = s.Split(',');
            Models.Tag[] tags   = new Models.Tag[values.Length];
            CompanyTag[] qt     = new CompanyTag[values.Length];
            for (int i = 0; i < values.Length; i++)
            {
                values[i] = values[i].Trim();
                string ss = values[i];
                if (ss != "")
                {
                    var data = await db.Tags.FirstOrDefaultAsync(x => x.name.Equals(ss, StringComparison.OrdinalIgnoreCase));

                    tags[i] = new Models.Tag();
                    if (data != null)
                    {
                        tags[i].Id = data.Id;
                    }
                    else
                    {
                        tags[i].name      = values[i];
                        tags[i].time      = DateTime.UtcNow;
                        tags[i].createdBy = User.Identity.GetUserId();
                        db.Tags.Add(tags[i]);
                    }
                }
                else
                {
                    tags[i] = null;
                }
            }
            try
            {
                await db.SaveChangesAsync();
            }
            catch (Exception e)
            {
                string sb = e.ToString();
            }
            for (int i = 0; i < values.Length; i++)
            {
                if (tags[i] != null)
                {
                    qt[i]           = new CompanyTag();
                    qt[i].companyId = companyId;
                    qt[i].tagId     = tags[i].Id;
                    db.CompanyTags.Add(qt[i]);
                }
            }
            await db.SaveChangesAsync();

            var ret = from taa in qt
                      select new
            {
                id   = taa.tagId,
                name = taa.Tag.name,
            };

            return(ret);
        }