コード例 #1
0
        public async Task <bool> UpdateResolutionAsync(Resolution resolution)
        {
            using (var db = new BkDbContext())
            {
                var existingResolution = await db.Resolutions.FirstOrDefaultAsync(p => p.Id == resolution.Id);

                if (existingResolution != null)
                {
                    if (existingResolution.Decision != null && existingResolution.DateTimeDesktopUpdate.Date != DateTime.Now.Date)
                    {
                        throw new PublicException("Время редактирования резолюции истекло");
                    }

                    existingResolution.DateResolution       = resolution.DateResolution;
                    existingResolution.DateTimeMobileUpdate = resolution.DateTimeMobileUpdate;
                    existingResolution.Decision             = resolution.Decision;
                    existingResolution.ImageData            = resolution.ImageData;
                    existingResolution.ImageName            = resolution.ImageName;
                    existingResolution.MimeType             = resolution.MimeType;
                    existingResolution.Note = resolution.Note;
                    existingResolution.PurposeOfPaymentComment = resolution.PurposeOfPaymentComment;

                    await db.SaveChangesAsync();

                    return(true);
                }

                throw new PublicException("Резолюция была удалена");
            }
        }
コード例 #2
0
        public async Task <int> MoveToArchiveAsync(int taskId)
        {
            using (var db = new BkDbContext())
            {
                var task = db.Tasks.FirstOrDefault(p => p.Id == taskId && !p.IsArchive);

                if (task != null)
                {
                    var resolutions = await db.Resolutions.Where(p => p.TaskId == taskId).ToListAsync();

                    var status = GetStatus(resolutions.Select(p => p.Decision));

                    if (status == TaskType.Green ||
                        status == TaskType.Red ||
                        status == TaskType.Yellow)
                    {
                        task.IsArchive = true;
                        return(await db.SaveChangesAsync());
                    }

                    throw new PublicException("Нельзя перенести в архив задание, по которому не все назначенные агенты вынесли резолюции");
                }
            }

            return(0);
        }
コード例 #3
0
        public async Task <int> CreateTaskAsync(BkTask model)
        {
            using (var db = new BkDbContext())
            {
                var task = db.Tasks.Add(model);
                await db.SaveChangesAsync();

                return(task.Id);
            }
        }
コード例 #4
0
        public async Task <int> CreateResolutionAsync(Resolution model)
        {
            using (var db = new BkDbContext())
            {
                var resolution = db.Resolutions.Add(model);
                await db.SaveChangesAsync();

                return(resolution.Id);
            }
        }
コード例 #5
0
        public async Task <string> RemoveAgentAync(int agentId)
        {
            using (var db = new BkDbContext())
            {
                var existingAgent = await db.Agents.FirstOrDefaultAsync(p => p.Id == agentId);

                if (existingAgent != null)
                {
                    db.Agents.Remove(existingAgent);
                    await db.SaveChangesAsync();
                }

                return(existingAgent.Code);
            }
        }
コード例 #6
0
        private async Task <bool> UpdateAgent(int agentId, Action <Agent> updateFunc)
        {
            using (var db = new BkDbContext())
            {
                var existingAgent = await db.Agents.FirstOrDefaultAsync(p => p.Id == agentId);

                if (existingAgent == null)
                {
                    throw new PublicException($"Агент не найден");
                }

                updateFunc(existingAgent);

                return((await db.SaveChangesAsync()) > 0);
            }
        }
コード例 #7
0
        public async Task <int> RemoveByAgentIdAsync(int agentId)
        {
            using (var db = new BkDbContext())
            {
                var resolutions = await db.Resolutions.Where(p => p.AgentId == agentId).ToListAsync();

                if (resolutions.Any())
                {
                    db.Resolutions.RemoveRange(resolutions);
                    await db.SaveChangesAsync();

                    return(resolutions.Count);
                }

                return(0);
            }
        }
コード例 #8
0
        public async Task <int> CreateAgentAync(string code, string password)
        {
            using (var db = new BkDbContext())
            {
                var existingAgent = await db.Agents.FirstOrDefaultAsync(p => p.Code == code);

                if (existingAgent != null)
                {
                    throw new PublicException($"Агент c таким логином уже существует");
                }

                var agent = db.Agents.Add(new Agent
                {
                    Code     = code,
                    Password = password
                });
                await db.SaveChangesAsync();

                return(agent.Id);
            }
        }
コード例 #9
0
        public async Task <int> RemoveTaskAsync(int taskId)
        {
            using (var db = new BkDbContext())
            {
                var task = await db.Tasks.FirstOrDefaultAsync(p => p.Id == taskId);

                if (task != null)
                {
                    var resolutions = await db.Resolutions.Where(p => p.TaskId == taskId).ToListAsync();

                    if (resolutions.Any())
                    {
                        db.Resolutions.RemoveRange(resolutions);
                    }

                    db.Tasks.Remove(task);

                    return(await db.SaveChangesAsync());
                }
            }

            return(0);
        }