Ejemplo n.º 1
0
        public async Task <AppFile> GetFileAsync(DataToChange dataToChange)
        {
            _logger.LogInformation("Время: {TimeAction}. Пользователь(Id:{ExecutorId}) , {Status} файл(Id:{FileId}) в Проекте (Id:{ProjectId})",
                                   DateTime.Now, dataToChange.CurrentUserId, Status.Received, dataToChange.FileId, dataToChange.ProjectId);

            return(await DataContext.Files.AsNoTracking().FirstOrDefaultAsync(f => f.Id == dataToChange.FileId));
        }
Ejemplo n.º 2
0
        public async Task AddFileAsync(DataToChange dataToChange)
        {
            var dataContext = DataContext;

            foreach (var file in dataToChange.Files)
            {
                if (IsNotExtensionValid(file))
                {
                    return;
                }

                using var memoryStream = new MemoryStream();
                await file.CopyToAsync(memoryStream);

                if (memoryStream.Length > 5242880)
                {
                    return;
                }

                var appFile = new AppFile()
                {
                    StageId = dataToChange.StageId,
                    Name    = file.FileName,
                    Type    = file.ContentType,
                    Content = memoryStream.ToArray()
                };
                dataContext.Files.Add(appFile);
                //TODO: Надеюсь, что будет незаметно.;
                await dataContext.SaveChangesAsync();

                _logger.LogInformation("Время: {TimeAction}. Пользователь(Id:{ExecutorId}) , {Status} файл(Id:{FileId}) в Проекте (Id:{ProjectId})", DateTime.Now, dataToChange.CurrentUserId, Status.Created, appFile.Id, dataToChange.ProjectId);
            }
        }
Ejemplo n.º 3
0
        private void OnClick(object sender, EventArgs e)
        {
            Button button = sender as Button;

            UsersManagement.UserData newUserData = userData;

            if (button == buttonSave)
            {
                //confirma os inputs para verificar quais os dados o utilizador quer mudar
                DataToChange dataToChange = ValidateUserNewInfo();

                //compara a nova e a velha password
                if (dataToChange.password)
                {
                    if (String.Compare(userData.password, textBox2.Text) != 0)
                    {
                        //se as passwords sao diferentes, confirma q a nova password é valida
                        if (!RegistrationUtility.IsPasswordValid(textBox2.Text))
                        {
                            MessageBox.Show("New Password not valid.");
                            return;
                        }
                        else
                        {
                            newUserData.password = textBox2.Text;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Your new password is the same as the old one.");
                        return;
                    }
                }

                //comparar datas de nascimento
                if (dataToChange.dob)
                {
                    if (!RegistrationUtility.IsDateValid(dateTimePicker1.Value))
                    {
                        MessageBox.Show("Your new date isnt valid!");
                        return;
                    }
                    else
                    {
                        newUserData.dob = dateTimePicker1.Value;
                    }
                }

                if (RegistrationUtility.UpdateUserInfo(Form1.sqlConnection, newUserData))
                {
                    MessageBox.Show("User info updated.");
                    this.Close();
                }
                else
                {
                    MessageBox.Show("Command failed.");
                }
            }
        }
Ejemplo n.º 4
0
        public async Task <long> GetTelegramIdAsync(DataToChange dataToChange)
        {
            var telegramId = await DataContext.Executors.Where(executor => executor.Id == dataToChange.CurrentUserId)
                             .Select(executor => executor.TelegramId)
                             .FirstOrDefaultAsync();

            return(telegramId);
        }
Ejemplo n.º 5
0
        public async Task AddTelegramIdAsync(DataToChange dataToChange)
        {
            var dataContext = DataContext;
            //TODO:Нормально нет.
            var currentExecutor = await dataContext.Executors.FirstOrDefaultAsync(executor => executor.Id == dataToChange.CurrentUserId);

            currentExecutor.TelegramId = dataToChange.TelegramId;
            dataContext.Entry(currentExecutor).State = EntityState.Modified;
            await dataContext.SaveChangesAsync();
        }
Ejemplo n.º 6
0
        public async Task EditExecutorAsync(DataToChange dataToChange)
        {
            var dataContext = DataContext;

            var stage = await dataContext.Stages
                        .FirstOrDefaultAsync(s => s.Id == dataToChange.StageId);

            _logger.LogInformation("Время: {TimeAction}. Пользователь {ExecutorId}, {Status} в Проекте {ProjectId} Этап: {StageId}", DateTime.Now, stage.ExecutorId, Status.Modified, stage.ProjectId, stage.Id);
            stage.ExecutorId = dataToChange.ExecutorId;
            dataContext.Entry(stage).State = EntityState.Modified;
            await dataContext.SaveChangesAsync();
        }
Ejemplo n.º 7
0
        public TelegramController(UserManager <ApplicationUser> userManager,
                                  SignInManager <ApplicationUser> signInManager,
                                  IDataRepository dataRepository,
                                  ICommandService commandService,
                                  ITelegramBotClient telegramBotClient)
        {
            _userManager       = userManager;
            _signInManager     = signInManager;
            _dataRepository    = dataRepository;
            _commandService    = commandService;
            _telegramBotClient = telegramBotClient;

            DataToChange = new DataToChange();
        }
Ejemplo n.º 8
0
        public async Task <bool> IsAdminAsync(DataToChange dataToChange)
        {
            const string ADMINUSERNAME   = "******";
            const string CREATORUSERNAME = "******";
            var          dataContext     = DataContext;

            var currentUser = await dataContext.Executors.Where(executor => executor.Id == dataToChange.CurrentUserId).Select(ex => ex.UserName).FirstOrDefaultAsync();

            if (currentUser == ADMINUSERNAME || currentUser == CREATORUSERNAME)
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 9
0
        public async Task DeleteFileAsync(DataToChange dataToChange)
        {
            var file = new AppFile
            {
                Id = dataToChange.FileId
            };

            _logger.LogInformation("Время: {TimeAction}. Пользователь(Id:{ExecutorId}) , {Status} файл(Id:{FileId}) в этапе (Id:{ProjectId})",
                                   DateTime.Now, dataToChange.CurrentUserId, Status.Deleted, dataToChange.FileId, dataToChange.StageId);

            var dataContext = DataContext;

            dataContext.Files.Attach(file);
            dataContext.Entry(file).State = EntityState.Deleted;
            await dataContext.SaveChangesAsync();
        }
Ejemplo n.º 10
0
        public async Task <Executor> GetFullNameAsync(DataToChange dataToChange)
        {
            var executor = await DataContext.Executors
                           .AsNoTracking()
                           .Where(exe => exe.Id == dataToChange.CurrentUserId)
                           .Select(exe => new
            {
                exe.FirstName,
                exe.LastName
            })
                           .AsQueryable()
                           .Select(executor => new Executor
            {
                FirstName = executor.FirstName,
                LastName  = executor.LastName
            })
                           .FirstOrDefaultAsync();

            return(executor);
        }
Ejemplo n.º 11
0
        public async Task <List <AppFile> > FileListAsync(DataToChange dataToChange)
        {
            var files = await DataContext.Files
                        .Where(f => f.StageId == dataToChange.StageId)
                        .Select(obj => new
            {
                obj.Id,
                obj.Name,
                obj.StageId,
                obj.Content.Length
            })
                        .AsQueryable()
                        .Select(f => new AppFile
            {
                Id      = f.Id,
                Name    = f.Name,
                StageId = f.StageId,
                Length  = f.Length
            })
                        .ToListAsync();

            return(files);
        }
Ejemplo n.º 12
0
        public async Task <List <Project> > GetStagesListDelegatedAsync(DataToChange dataToChange)
        {
            var dataContext = DataContext;
            var projects    = await dataContext.Projects
                              .AsNoTracking()
                              .Where(p => p.ExecutorId != dataToChange.CurrentUserId)
                              .Select(project => new
            {
                project.Id,
                project.Name,
                project.Executor.FirstName,
                project.Executor.LastName,
                project.ExecutorId,
                project.CreationDate,
                Stages = project.Stages.Where(stage => stage.ExecutorId == dataToChange.CurrentUserId)
            })
                              .AsQueryable()
                              .Select(project => new Project
            {
                Id           = project.Id,
                Name         = project.Name,
                CreationDate = project.CreationDate,
                Executor     = new Executor()
                {
                    FirstName = project.FirstName,
                    LastName  = project.LastName
                },
                ExecutorId = project.ExecutorId,
                Stages     = project.Stages.ToList()
            })
                              .ToListAsync();

            projects = projects.Where(p => p.Stages.Count != 0).ToList();
            projects.ForEach(p => p.Stages = p.Stages.OrderBy(s => s.CreationDate).ToList());
            return(projects);
        }
Ejemplo n.º 13
0
 public ProjectController(IDataRepository dataRepository, ServiceTelegramMessage telegramMessage)
 {
     _dataRepository  = dataRepository;
     _telegramMessage = telegramMessage;
     DataToChange     = new DataToChange();
 }
Ejemplo n.º 14
0
        public async Task <MessageObject> GetInformationForMessageAsync(DataToChange dataToChange)
        {
            var dataContext = DataContext;

            var messageObject = await dataContext.Executors
                                .AsNoTracking()
                                .Where(exe => exe.Id == dataToChange.CurrentUserId)
                                .Select(exe => new
            {
                exe.FirstName,
                exe.LastName,
                Project = exe.Projects
                          .Where(project => project.Id == dataToChange.ProjectId)
                          .Select(p => new
                {
                    p.Name,
                    p.Executor.FirstName,
                    p.Executor.LastName,
                    StageName = p.Stages.Where(stage => stage.Id == dataToChange.StageId).Select(s => s.Name).FirstOrDefault()
                })
                          .FirstOrDefault()
            })
                                .AsQueryable()
                                .Select(messageObject => new MessageObject
            {
                SenderExecutor = new SenderExecutor()
                {
                    FirstName = messageObject.FirstName,
                    LastName  = messageObject.LastName
                },

                StageName   = messageObject.Project.StageName,
                ProjectName = messageObject.Project.Name,

                ExecutorProject = new ExecutorProject()
                {
                    FirstName = messageObject.Project.FirstName,
                    LastName  = messageObject.Project.LastName
                }
            })
                                .FirstOrDefaultAsync();

            var recipientExecutor = await dataContext.Executors
                                    .AsNoTracking()
                                    .Where(exe => exe.Id == dataToChange.ExecutorId)
                                    .Select(exe => new
            {
                exe.FirstName,
                exe.LastName,
                exe.TelegramId
            })
                                    .AsQueryable()
                                    .Select(recipientExecutor => new RecipientExecutor
            {
                FirstName  = recipientExecutor.FirstName,
                LastName   = recipientExecutor.LastName,
                TelegramId = recipientExecutor.TelegramId
            })
                                    .FirstOrDefaultAsync();

            messageObject.RecipientExecutor = recipientExecutor;
            return(messageObject);
        }