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)); }
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)); }
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()); }
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()); }
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)); }
void Start() { systemOperations = this; }
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); }
//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)); }