Esempio n. 1
0
        public async Task <IActionResult> ManageReports()
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            var reports          = _reportData.GetByAuthorId(user.Id);
            var reportViewModels = new List <ReportViewModel>();

            foreach (var report in reports)
            {
                reportViewModels.Add(new ReportViewModel {
                    Id          = report.Id,
                    ProjectName = report.Project.Title,
                    Date        = report.Date.ToHijri(),
                    Title       = report.Title,
                    IsViewed    = report.ProjectManagers.Any(pm => pm.IsViewd == true)
                });
            }

            var userReportViewModel = new UserReportViewModel {
                Reports  = reportViewModels,
                Messages = SystemOperations.GetMessageViewModels(_messageService, user.Id)
            };

            return(View(userReportViewModel));
        }
Esempio n. 2
0
        public async Task <IActionResult> ManageReports(String nav)
        {
            var manager = await _userManager.FindByNameAsync(User.Identity.Name);

            var userReports = _reportData.GetAllReports(manager.Id);

            var userReportViewModels = new List <ReportViewModel>();

            foreach (var report in userReports)
            {
                userReportViewModels.Add(new ReportViewModel
                {
                    Id            = report.Report.Id,
                    Title         = report.Report.Title,
                    Author        = report.Report.Author,
                    Text          = report.Report.Text,
                    ProjectName   = report.Report.Project.Title,
                    TaskStartTime = report.Report.TaskStartTime,
                    TaskEndTime   = report.Report.TaskEndTime,
                    Date          = report.Report.Date.ToHijri(),
                    IsViewed      = report.IsViewd
                });
            }

            var reportsViewModel = new ReportsManagementViewModel
            {
                ManagerId   = manager.Id,
                UserReports = userReportViewModels,
                Messages    = SystemOperations.GetMessageViewModels(_messageService, manager.Id)
            };

            return(View(reportsViewModel));
        }
Esempio n. 3
0
        public IActionResult AdminPanel()
        {
            //prepare datas for chart
            short ADMIN_ID           = 1;
            var   projects           = _projectData.GetAll();
            var   today              = DateTime.Now;
            var   userReports        = _reportData.GetReportsOfLastSevenDays();
            var   managerReports     = _managerReportData.GetReportsOfLastSevenDays();
            var   userReportCount    = new List <int>();
            var   managerReportCount = new List <int>();
            var   projectViewModels  = new List <ProjectViewModel>();
            var   warnings           = _messageService.GetWarnings();
            var   warningViewModels  = new List <WarningViewModel>();
            var   activities         = _activityData.GetAllActivities().ToList();

            //A list for the last 7 days
            var days = new List <String>();

            //counting number of reports in the last 7 days
            for (int i = -6; i <= 0; i++)
            {
                var day = today.AddDays(i);               //finding the day that we want to count reports
                days.Add(day.ToHijri().GetDayAndMonth()); //Adding to days List
                userReportCount.Add(userReports.Count(r => r.Date.Date == day.Date));
                managerReportCount.Add(managerReports.Count(r => r.Date.Date == day.Date));
            }


            foreach (var project in projects)
            {
                projectViewModels.Add(new ProjectViewModel {
                    Id         = project.Id,
                    Title      = project.Title,
                    CreateDate = project.CreateDate.ToHijri().GetDate(),
                    EndDate    = project.EndDate.HasValue ? project.EndDate.Value.ToHijri().GetDate() : null
                });
            }
            foreach (var warning in warnings)
            {
                warningViewModels.Add(new WarningViewModel {
                    ReceiverName = String.Concat(warning.Receiver.FirstName, " ", warning.Receiver.LastName),
                    Title        = warning.Message.Title,
                    IsViewed     = warning.IsViewd,
                    ElapsedTime  = Math.Round(DateTime.Now.Subtract(warning.Message.Time).TotalHours)
                });
            }

            var adminPanelModel = new AdminPanelViewModel {
                Days                = days,
                Projects            = projectViewModels,
                UsersReportCount    = userReportCount,
                ManagersReportCount = managerReportCount,
                Warnings            = warningViewModels,
                Messages            = SystemOperations.GetMessageViewModels(_messageService, ADMIN_ID),
                Activities          = activities
            };

            return(View(adminPanelModel));
        }
        public async Task <IActionResult> UploadAttachment(IFormFile attachment)
        {
            var fileName = await SystemOperations.SaveReportAttachment(_webHostEnvironment, attachment);

            if (fileName != null)
            {
                return(Ok(fileName));
            }
            return(BadRequest());
        }
Esempio n. 5
0
        public async Task <IActionResult> UploadImage(IFormFile image)
        {
            if (image != null)
            {
                var imageName = await SystemOperations.SaveProfileImage(_webHostEnvironment, image);

                if (imageName != null)
                {
                    return(Ok(imageName));
                }
            }
            return(BadRequest());
        }
        public async Task <IActionResult> Create()
        {
            var author = await _userManager.FindByNameAsync(User.Identity.Name);

            var model = new CreateReportViewModel
            {
                AuthorId   = author.Id,
                Managers   = SystemOperations.GetProjectManagerViewModels(author.Id, _managerData), //List of all managers of this user
                Projects   = SystemOperations.GetInProgressProjectViewModels(_projectService),      //All in progress projects
                Activities = _activityData.GetParentActivities().ToList()                           //List of main activities
            };

            return(View(model));
        }
        public void BeforeEachTest()
        {
            string AssignmentId = $"{TestTitleIdUlong}:{TestBuildId}:{TestRegion}";

            _logger             = new MultiLogger(NullLogger.Instance, new TelemetryClient(TelemetryConfiguration.CreateDefault()));
            _systemOperations   = new SystemOperations();
            _dockerClient       = new Mock <IDockerClient>();
            _sessionHostManager = new Mock <ISessionHostManager>();
            _vmConfiguration    = new VmConfiguration(56001, TestVmId, new VmDirectories(_VmDirectoryRoot), true);

            _sessionHostsStartInfo = new SessionHostsStartInfo();
            _sessionHostsStartInfo.AssignmentId      = AssignmentId;
            _sessionHostsStartInfo.PublicIpV4Address = TestPublicIpV4Address;

            _sessionHostManager.Setup(x => x.VmAgentSettings).Returns(new VmAgentSettings());
        }
Esempio n. 8
0
        public void TestSetUnixOwnerDoesNothing()
        {
            List <string> expectedItemsToOwn = new List <string>()
            {
                _directoryPath,
                _subdirectoryPath,
                _directoryFilePath,
                _subdirectoryFilePath
            };
            VmConfiguration  config           = new VmConfiguration(56001, "vmid", new VmDirectories("root"), false);
            SystemOperations systemOperations = new SystemOperations(config, _logger, _mockFileSystemOperations.Object);

            systemOperations.SetUnixOwnerIfNeeded(_directoryPath, true);
            expectedItemsToOwn.ForEach(
                (item) => _mockFileSystemOperations.Verify(x => x.SetUnixOwner(It.IsAny <string>(), It.IsAny <string>()), Times.Never));
        }
        public RegistryClient(RegistryClientConfiguration configuration, AuthenticationProvider authenticationProvider)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            if (authenticationProvider == null)
            {
                throw new ArgumentNullException(nameof(authenticationProvider));
            }

            _client = new NetworkClient(configuration, authenticationProvider);

            Manifest    = new ManifestOperations(_client);
            Catalog     = new CatalogOperations(_client);
            Blobs       = new BlobOperations(_client);
            BlobUploads = new BlobUploadOperations(_client);
            System      = new SystemOperations(_client);
            Tags        = new TagOperations(_client);
        }
 public IActionResult Create(CreateReportViewModel model)
 {
     model.Managers   = SystemOperations.GetProjectManagerViewModels(model.AuthorId, _managerData);
     model.Projects   = SystemOperations.GetInProgressProjectViewModels(_projectService);
     model.Activities = _activityData.GetParentActivities().ToList();
     if (ModelState.IsValid)
     {
         if (model.TaskStartTime >= model.TaskEndTime)
         {
             ModelState.AddModelError("", "زمان ورود و خروج را بررسی کنید.");
             return(View(model));
         }
         //Save report Attachment
         var report = new Report
         {
             Title           = model.Title,
             Text            = model.Text,
             ProjectId       = model.ProjectId,
             AuthorId        = model.AuthorId,
             ActivityId      = model.ActivityId,
             SubActivityId   = model.SubActivityId,
             ActivityApendix = model.ActivityApendix,
             TaskStartTime   = model.TaskStartTime,
             TaskEndTime     = model.TaskEndTime,
             Date            = DateTime.Now,
             AttachmentName  = model.AttachmentName
         };
         var savedReport = _reportData.Add(report, model.ProjectManagerIds); //Saving Report
         if (savedReport == null)
         {
             ModelState.AddModelError("", "مشکل در ایجاد گزارش.");
             return(View(model));
         }
         return(RedirectToAction("ManageReports", "Account"));
     }
     return(View(model));
 }
 public IActionResult Edit(CreateReportViewModel model)
 {
     model.Managers   = SystemOperations.GetProjectManagerViewModels(model.AuthorId, _managerData);
     model.Projects   = SystemOperations.GetInProgressProjectViewModels(_projectService);
     model.Activities = _activityData.GetParentActivities().ToList();
     if (ModelState.IsValid)
     {
         if (model.TaskStartTime >= model.TaskEndTime)
         {
             ModelState.AddModelError("", "زمان شروع و پایان را بررسی کنید.");
             return(View(model));
         }
         //Save report Attachment
         var report = _reportData.Get(model.Id);
         report.Title           = model.Title;
         report.Text            = model.Text;
         report.ProjectId       = model.ProjectId;
         report.ActivityId      = model.ActivityId;
         report.SubActivityId   = model.SubActivityId == 0 ? null : model.SubActivityId;
         report.ActivityApendix = model.ActivityApendix;
         report.TaskStartTime   = model.TaskStartTime;
         report.TaskEndTime     = model.TaskEndTime;
         if (model.AttachmentName != null) //preventing from saving null instead of last attachment
         {
             report.AttachmentName = model.AttachmentName;
         }
         var result = _reportData.Update(report, model.ProjectManagerIds);
         if (!result)
         {
             ModelState.AddModelError("", "مشکل در بروزرسانی!");
             return(View(model));
         }
         return(RedirectToAction("ManageReports", "Account"));
     }
     return(View(model));
 }
        public IActionResult Edit(short id)
        {
            var report = _reportData.Get(id);

            if (report == null)
            {
                return(NotFound());
            }
            if (report.Author.UserName != User.Identity.Name)
            {
                return(RedirectToAction("AccessDenied", "Home"));
            }
            var model = new CreateReportViewModel
            {
                Id                = report.Id,
                AuthorId          = report.AuthorId,
                ActivityId        = report.Activity.Id,
                SubActivityId     = report.SubActivityId ?? null,
                ActivityApendix   = report.ActivityApendix,
                TaskStartTime     = report.TaskStartTime,
                TaskEndTime       = report.TaskEndTime,
                ProjectId         = report.ProjectId,
                Managers          = SystemOperations.GetProjectManagerViewModels(report.AuthorId, _managerData),
                Projects          = SystemOperations.GetInProgressProjectViewModels(_projectService),
                Activities        = _activityData.GetParentActivities().ToList(), //List of main activities
                ProjectManagerIds = report.ProjectManagers.Select(pm => pm.ManagerId).ToList(),
                Title             = report.Title,
                Text              = report.Text,
                //If any of project managers submited report with this report
                IsSubmitedByManager = report.ManagerReports != null && report.ManagerReports.Any() ? true : false,
                AttachmentName      = report.AttachmentName != null ? report.AttachmentName : null
            };


            return(View(model));
        }
Esempio n. 13
0
 void Start()
 {
     systemOperations = this;
 }
Esempio n. 14
0
        public void BeforeEachTest()
        {
            _directoryPath     = Path.Combine(_root, _directoryName);
            _directoryInfo     = new DirectoryInfo(_directoryPath);
            _subdirectoryPath  = Path.Combine(_directoryPath, _subdirectoryName);
            _subDirectoryInfo  = new DirectoryInfo(_subdirectoryPath);
            _directoryFilePath = Path.Combine(_directoryPath, _directoryFileName);
            FileInfo directoryFileInfo = new FileInfo(_directoryFilePath);

            _subdirectoryFilePath = Path.Combine(_subdirectoryPath, _subdirectoryFileName);
            FileInfo subDirectoryFileInfo = new FileInfo(_subdirectoryFilePath);

            _defaultSourceFile = Path.Combine(_root, "Source");

            _mockFileSystemOperations = new Mock <IFileSystemOperations>();
            _vmConfiguration          = new VmConfiguration(56001, "vmid", new VmDirectories("root"), true);
            _logger           = new MultiLogger(NullLogger.Instance, new TelemetryClient(TelemetryConfiguration.CreateDefault()));
            _systemOperations = new SystemOperations(_vmConfiguration, _logger, _mockFileSystemOperations.Object);

            _mockFileSystemOperations.Setup(x => x.IsDirectory(_root)).Returns(true);
            _mockFileSystemOperations.Setup(x => x.IsDirectory(_subdirectoryPath)).Returns(true);
            _mockFileSystemOperations.Setup(x => x.IsDirectory(_directoryPath)).Returns(true);
            _mockFileSystemOperations.Setup(x => x.IsDirectory(_directoryFilePath)).Returns(false);
            _mockFileSystemOperations.Setup(x => x.IsDirectory(_subdirectoryFilePath)).Returns(false);

            _mockFileSystemOperations.Setup(x => x.GetFiles(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _root)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <FileInfo> toReturn = new List <FileInfo>();
                if (recursive)
                {
                    toReturn.Add(subDirectoryFileInfo);
                    toReturn.Add(directoryFileInfo);
                }
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.GetFiles(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _directoryPath)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <FileInfo> toReturn = new List <FileInfo>();
                toReturn.Add(directoryFileInfo);
                if (recursive)
                {
                    toReturn.Add(subDirectoryFileInfo);
                }
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.GetFiles(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _subdirectoryPath)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <FileInfo> toReturn = new List <FileInfo>();
                toReturn.Add(subDirectoryFileInfo);
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.GetDirectories(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _root)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <DirectoryInfo> toReturn = new List <DirectoryInfo>();
                toReturn.Add(_directoryInfo);
                if (recursive)
                {
                    toReturn.Add(_subDirectoryInfo);
                }
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.GetDirectories(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _directoryPath)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <DirectoryInfo> toReturn = new List <DirectoryInfo>();
                toReturn.Add(_subDirectoryInfo);
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.GetDirectories(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _subdirectoryPath)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <DirectoryInfo> toReturn = new List <DirectoryInfo>();
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.GetFileSystemInfos(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _root)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <FileSystemInfo> toReturn = new List <FileSystemInfo>();
                toReturn.Add(_directoryInfo);
                if (recursive)
                {
                    toReturn.Add(_subDirectoryInfo);
                    toReturn.Add(directoryFileInfo);
                    toReturn.Add(subDirectoryFileInfo);
                }
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.GetFileSystemInfos(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _directoryPath)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <FileSystemInfo> toReturn = new List <FileSystemInfo>();
                toReturn.Add(_subDirectoryInfo);
                toReturn.Add(directoryFileInfo);
                if (recursive)
                {
                    toReturn.Add(subDirectoryFileInfo);
                }
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.GetFileSystemInfos(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _subdirectoryPath)), It.IsAny <bool>()))
            .Returns <DirectoryInfo, bool>(
                (dirInfo, recursive) =>
            {
                List <FileSystemInfo> toReturn = new List <FileSystemInfo>();
                toReturn.Add(subDirectoryFileInfo);
                return(toReturn);
            });

            _mockFileSystemOperations.Setup(x => x.CreateSubdirectory(It.IsAny <DirectoryInfo>(), It.IsAny <string>()))
            .Returns <DirectoryInfo, string>((info, name) => new DirectoryInfo(Path.Combine(info.FullName, name)));

            DirectoryInfo nullDirInfo = null;
            DirectoryInfo rootDirInfo = new DirectoryInfo(_root);

            _mockFileSystemOperations.Setup(x => x.TryGetParentDirectory(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _root)), out nullDirInfo)).Returns(false);
            _mockFileSystemOperations.Setup(x => x.TryGetParentDirectory(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _directoryPath)), out rootDirInfo)).Returns(true);
            _mockFileSystemOperations.Setup(x => x.TryGetParentDirectory(It.Is <DirectoryInfo>((info) => IsFileSystemInfoEqual(info, _subdirectoryPath)), out _directoryInfo)).Returns(true);
            _mockFileSystemOperations.Setup(x => x.Exists(It.Is <FileSystemInfo>((info) => IsFileSystemInfoEqual((DirectoryInfo)info, _root)))).Returns(true);
            _mockFileSystemOperations.Setup(x => x.Exists(It.IsAny <FileSystemInfo>())).Returns(false);
        }
Esempio n. 15
0
        //Generates Excel report based on submited manager reports
        public async Task <IActionResult> GetDailyReport(DateTime date, String token)
        {
            //Setting download token to check start of download on client side
            Response.Cookies.Append("downloadToken", token,
                                    new CookieOptions
            {
                Expires     = DateTime.Now.AddHours(1),
                IsEssential = true
            });
            var manager = await _userManager.FindByNameAsync(User.Identity.Name);

            var reports = _managerReportData.GetReportsByDay(manager.Id, date).ToList();
            var stream  = new MemoryStream();

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            using (var package = new ExcelPackage(stream))
            {
                //Basic styling of worksheet
                var workSheet = package.Workbook.Worksheets.Add("Sheet1");
                workSheet.View.RightToLeft = true;
                var headerCells = workSheet.Cells["A1:H1"];
                headerCells.Style.Fill.PatternType = ExcelFillStyle.Solid;
                headerCells.Style.Fill.BackgroundColor.SetColor(Color.Lime);
                headerCells.Style.Font.Bold        = true;
                workSheet.Column(1).Width          = 20;
                workSheet.Column(2).Width          = 20;
                workSheet.Column(3).Width          = 20;
                workSheet.Column(4).Width          = 20;
                workSheet.Column(5).Width          = 20;
                workSheet.Column(6).Width          = 60;
                workSheet.Column(7).Width          = 60;
                workSheet.Column(8).Width          = 20;
                workSheet.Column(6).Style.WrapText = true;
                workSheet.Column(7).Style.WrapText = true;
                workSheet.Cells["A1"].Value        = "نام کارمند";
                workSheet.Cells["B1"].Value        = "نام پروژه";
                workSheet.Cells["C1"].Value        = "فعالیت";
                workSheet.Cells["D1"].Value        = "زیرفعالیت";
                workSheet.Cells["E1"].Value        = "ساعت کاری";
                workSheet.Cells["F1"].Value        = "گزارش کارمند";
                workSheet.Cells["G1"].Value        = "گزارش مدیر";
                workSheet.Cells["H1"].Value        = "وضعیت گزارش";
                //setting cell allinments
                var allCells = workSheet.Cells[1, 1, reports.Count() + 1, 8];
                allCells.Style.HorizontalAlignment            = ExcelHorizontalAlignment.Center;
                allCells.Style.VerticalAlignment              = ExcelVerticalAlignment.Center;
                workSheet.Column(6).Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
                workSheet.Column(6).Style.VerticalAlignment   = ExcelVerticalAlignment.Top;
                workSheet.Column(7).Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
                workSheet.Column(7).Style.VerticalAlignment   = ExcelVerticalAlignment.Top;


                //Setting cell borders
                allCells.Style.Border.Top.Style    = ExcelBorderStyle.Thin;
                allCells.Style.Border.Left.Style   = ExcelBorderStyle.Thin;
                allCells.Style.Border.Right.Style  = ExcelBorderStyle.Thin;
                allCells.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
                //Filling cells with manager report datas
                for (int i = 0; i < reports.Count(); i++)
                {
                    var report   = reports[i];
                    var name     = report.Report.Author.FirstName + " " + report.Report.Author.LastName;
                    var workHour = report.Report.TaskEndTime.Subtract(report.Report.TaskStartTime);
                    workSheet.Cells[i + 2, 1].Value = name;
                    workSheet.Cells[i + 2, 2].Value = report.Report.Project.Title;
                    workSheet.Cells[i + 2, 3].Value = report.Report.Activity.Name;
                    workSheet.Cells[i + 2, 4].Value = report.Report.SubActivity != null ?
                                                      report.Report.SubActivity.Name : "-";
                    workSheet.Cells[i + 2, 5].Value = workHour;
                    workSheet.Cells[i + 2, 5].Style.Numberformat.Format = "hh:mm";
                    workSheet.Cells[i + 2, 6].Value = SystemOperations.GetTextFromQuillData(report.Report.Text);
                    workSheet.Cells[i + 2, 7].Value = SystemOperations.GetTextFromQuillData(report.Text);
                    workSheet.Cells[i + 2, 8].Value = report.IsUserReportAcceptable == true ? "قابل قبول" : "غیرقابل قبول";
                }
                package.Save();
            }
            stream.Position = 0;

            var fileName = String.Format("{0}.xlsx", date.ToHijri().GetDate());

            return(File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName));
        }