Example #1
0
        public async Task <bool> DeleteDepartmentStaffingResetJobAsync(int departmentId, CancellationToken cancellationToken = default(CancellationToken))
        {
            var department = await _departmentsService.GetDepartmentByIdAsync(departmentId);

            // TODO: Possible bug here, if they change the managing user after setting up a job, it will miss here
            var tasks = (from st in await _scheduledTaskRepository.GetAllAsync()
                         where st.DepartmentId == departmentId && st.TaskType == (int)TaskTypes.DepartmentStaffingReset
                         select st).ToList();

            //var tasks = GetScheduledTasksByUserType(department.ManagingUserId, (int)TaskTypes.DepartmentStaffingReset);

            foreach (var task in tasks)
            {
                await _scheduledTaskRepository.DeleteAsync(task, cancellationToken);
            }

            var tasks2 = (from st in await _scheduledTaskRepository.GetAllAsync()
                          where st.UserId == department.ManagingUserId && st.TaskType == (int)TaskTypes.DepartmentStaffingReset
                          select st).ToList();

            //var tasks = GetScheduledTasksByUserType(department.ManagingUserId, (int)TaskTypes.DepartmentStaffingReset);

            foreach (var task in tasks2)
            {
                await _scheduledTaskRepository.DeleteAsync(task, cancellationToken);
            }

            InvalidateScheduledTasksCache();

            return(true);
        }
Example #2
0
        public async Task <IActionResult> Index()
        {
            var model = new IndexView();

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId);

            model.Profile  = _departmentProfileService.GetOrInitializeDepartmentProfile(DepartmentId);
            model.ImageUrl = $"{Config.SystemBehaviorConfig.ResgridApiBaseUrl}/api/v3/Avatars/Get?id={model.Profile.DepartmentId}&type=1";

            var posts        = _departmentProfileService.GetArticlesForDepartment(model.Profile.DepartmentProfileId);
            var visiblePosts = _departmentProfileService.GetVisibleArticlesForDepartment(model.Profile.DepartmentProfileId);

            if (visiblePosts != null && visiblePosts.Any())
            {
                model.VisiblePosts = visiblePosts.Count;
            }

            if (posts.Any())
            {
                model.Posts = posts.Skip(Math.Max(0, posts.Count() - 3)).ToList();
            }
            else
            {
                model.Posts = new List <DepartmentProfileArticle>();
            }

            return(View(model));
        }
Example #3
0
        public async Task <bool> CanUserViewAndEditWorkLogAsync(string userId, int logId)
        {
            var department = await _departmentsService.GetDepartmentByUserIdAsync(userId);

            var log = await _workLogsService.GetWorkLogByIdAsync(logId);

            if (department == null || log == null)
            {
                return(false);
            }

            var logDepartment = await _departmentsService.GetDepartmentByIdAsync(log.DepartmentId);

            if (department.DepartmentId != logDepartment.DepartmentId)
            {
                return(false);
            }

            if (logDepartment.IsUserAnAdmin(userId))
            {
                return(true);
            }

            if (log.LoggedByUserId == userId)
            {
                return(true);
            }

            if (log.Users.Any(x => x.UserId == userId))
            {
                return(true);
            }

            return(false);
        }
Example #4
0
        public async Task <Shift> PopulateShiftData(Shift shift, bool getDepartment, bool getPersonnel, bool getGroups,
                                                    bool getSignups, bool getAdmins)
        {
            if (getDepartment && shift.Department == null)
            {
                shift.Department = await _departmentsService.GetDepartmentByIdAsync(shift.DepartmentId);
            }

            if (getPersonnel && shift.Personnel == null)
            {
                shift.Personnel = (await _shiftPersonRepository.GetAllShiftPersonsByShiftIdAsync(shift.ShiftId)).ToList();
            }
            else
            {
                shift.Personnel = new List <ShiftPerson>();
            }

            if (getGroups && shift.Groups == null)
            {
                shift.Groups = await GetShiftGroupsForShift(shift.ShiftId);
            }

            if (getSignups && shift.Signups == null)
            {
                shift.Signups = (await _shiftSignupRepository.GetAllShiftSignupsByShiftIdAsync(shift.ShiftId)).ToList();
            }

            return(shift);
        }
Example #5
0
        public async Task <IActionResult> Index()
        {
            LogsIndexView model = new LogsIndexView();

            model.CallLogs = await _workLogsService.GetAllCallLogsForUserAsync(UserId);

            model.WorkLogs = await _workLogsService.GetAllLogsForUserAsync(UserId);

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            model.Years = new List <SelectListItem>();

            var years = await _workLogsService.GetLogYearsByDeptartmentAsync(DepartmentId);

            if (years != null && years.Any())
            {
                foreach (var year in years)
                {
                    model.Years.Add(new SelectListItem(year, year));
                }
                model.Year = years[0];
            }

            return(View(model));
        }
Example #6
0
        public async Task <IActionResult> ViewEntry(int inventoryId)
        {
            var model = new ViewEntryView();

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId);

            model.Inventory = await _inventoryService.GetInventoryByIdAsync(inventoryId);

            if (model.Inventory == null || model.Inventory.DepartmentId != DepartmentId)
            {
                Unauthorized();
            }

            var profile = await _userProfileService.GetProfileByUserIdAsync(model.Inventory.AddedByUserId);

            if (profile != null)
            {
                model.Name = profile.FullName.AsFirstNameLastName;
            }
            else
            {
                model.Name = "Unknown";
            }

            return(View(model));
        }
Example #7
0
        public async Task <IActionResult> GetAuditLogsList()
        {
            var auditLogsJson = new List <AuditLogJson>();
            var auditLogs     = await _auditService.GetAllAuditLogsForDepartmentAsync(DepartmentId);

            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            foreach (var auditLog in auditLogs)
            {
                var auditJson = new AuditLogJson();
                auditJson.AuditLogId = auditLog.AuditLogId;
                //auditJson.Name = UserHelper.GetFullNameForUser(null, auditLog.UserId);
                auditJson.Message = auditLog.Message;

                if (auditLog.LoggedOn.HasValue)
                {
                    auditJson.Timestamp = auditLog.LoggedOn.Value.TimeConverterToString(department);
                }
                else
                {
                    auditJson.Timestamp = "Unknown";
                }

                auditJson.Type = _auditService.GetAuditLogTypeString((AuditLogTypes)auditLog.LogType);

                auditLogsJson.Add(auditJson);
            }

            return(Json(auditLogsJson));
        }
Example #8
0
        public async Task <ActionResult <List <NotesResult> > > GetAllNotes()
        {
            var results    = new List <NotesResult>();
            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            var notes = await _notesService.GetNotesForDepartmentFilteredAsync(DepartmentId, department.IsUserAnAdmin(UserId));

            foreach (var n in notes)
            {
                var noteResult = new NotesResult();
                noteResult.Nid = n.NoteId;
                noteResult.Uid = n.UserId;
                noteResult.Ttl = n.Title;
                noteResult.Bdy = StringHelpers.StripHtmlTagsCharArray(n.Body).Truncate(100);
                noteResult.Adn = n.AddedOn.TimeConverter(department);
                noteResult.Cat = n.Category;
                noteResult.Clr = n.Color;

                if (n.ExpiresOn.HasValue)
                {
                    noteResult.Exp = n.ExpiresOn.Value;
                }

                results.Add(noteResult);
            }

            return(Ok(results));
        }
Example #9
0
        public async Task <IActionResult> Dashboard(bool firstRun = false)
        {
            var model = new DashboardModel();

            var staffingLevel = await _userStateService.GetLastUserStateByUserIdAsync(UserId);

            model.UserState = staffingLevel.State;
            model.StateNote = staffingLevel.Note;

            var staffingLevels = await _customStateService.GetActiveStaffingLevelsForDepartmentAsync(DepartmentId);

            if (staffingLevels == null)
            {
                model.UserStateTypes   = model.UserStateEnum.ToSelectList();
                ViewBag.UserStateTypes = model.UserStateEnum.ToSelectList();
            }
            else
            {
                model.CustomStaffingActive = true;
                var selected = staffingLevels.Details.FirstOrDefault(x => x.CustomStateDetailId == staffingLevel.State);
                model.UserStateTypes   = new SelectList(staffingLevels.GetActiveDetails(), "CustomStateDetailId", "ButtonText", selected);
                ViewBag.UserStateTypes = new SelectList(staffingLevels.GetActiveDetails(), "CustomStateDetailId", "ButtonText", selected);
            }

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            model.FirstRun = firstRun;
            model.Number   = await _departmentSettingsService.GetTextToCallNumberForDepartmentAsync(DepartmentId);

            model.States = await _customStateService.GetActivePersonnelStateForDepartmentAsync(DepartmentId);

            return(View(model));
        }
Example #10
0
        public async Task <ActionResult <List <CalendarItem> > > GetDepartmentCalendarItems()
        {
            List <CalendarItem>       jsonItems = new List <CalendarItem>();
            List <Model.CalendarItem> items     = null;

            items = await _calendarService.GetAllCalendarItemsForDepartmentAsync(DepartmentId);

            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            foreach (var item in items)
            {
                CalendarItem calendarItem = new CalendarItem();
                calendarItem.CalendarItemId      = item.CalendarItemId;
                calendarItem.Title               = item.Title;
                calendarItem.Start               = item.Start.TimeConverter(department);
                calendarItem.End                 = item.End.TimeConverter(department);
                calendarItem.StartTimezone       = item.StartTimezone;
                calendarItem.EndTimezone         = item.EndTimezone;
                calendarItem.Description         = item.Description;
                calendarItem.RecurrenceId        = item.RecurrenceId;
                calendarItem.RecurrenceRule      = item.RecurrenceRule;
                calendarItem.RecurrenceException = item.RecurrenceException;
                calendarItem.IsAllDay            = item.IsAllDay;
                calendarItem.ItemType            = item.ItemType;
                calendarItem.Location            = item.Location;
                calendarItem.SignupType          = item.SignupType;
                calendarItem.Reminder            = item.Reminder;
                calendarItem.LockEditing         = item.LockEditing;
                calendarItem.Entities            = item.Entities;
                calendarItem.RequiredAttendes    = item.RequiredAttendes;
                calendarItem.OptionalAttendes    = item.OptionalAttendes;

                if (!String.IsNullOrWhiteSpace(item.CreatorUserId))
                {
                    calendarItem.CreatorUserId = item.CreatorUserId.ToString();
                }

                if (department.IsUserAnAdmin(UserId))
                {
                    calendarItem.IsAdminOrCreator = true;
                }
                else if (!String.IsNullOrWhiteSpace(item.CreatorUserId) && item.CreatorUserId == UserId)
                {
                    calendarItem.IsAdminOrCreator = true;
                }
                else
                {
                    calendarItem.IsAdminOrCreator = false;
                }


                jsonItems.Add(calendarItem);
            }

            return(Ok(jsonItems));
        }
Example #11
0
        public async Task <IActionResult> Index()
        {
            LogsIndexView model = new LogsIndexView();

            model.CallLogs = await _workLogsService.GetAllCallLogsForUserAsync(UserId);

            model.WorkLogs = await _workLogsService.GetAllLogsForUserAsync(UserId);

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            return(View(model));
        }
Example #12
0
        public async Task <IActionResult> Index()
        {
            var model = new LinksIndexView();

            model.DepartmentId = DepartmentId;
            model.Links        = await _departmentLinksService.GetAllLinksForDepartmentAsync(DepartmentId);

            model.CanCreateLinks = await _limitsService.CanDepartmentUseLinksAsync(DepartmentId);

            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId);

            model.Code = department.LinkCode;

            return(View(model));
        }
Example #13
0
        public async Task <IActionResult> Report(int trainingId)
        {
            var model = new TrainingReportView();

            model.Training = await _trainingService.GetTrainingByIdAsync(trainingId);

            model.UserGroups = new Dictionary <string, string>();
            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            if (model.Training.DepartmentId != DepartmentId)
            {
                Unauthorized();
            }

            foreach (var user in model.Training.Users)
            {
                var group = await _departmentGroupsService.GetGroupForUserAsync(user.UserId, DepartmentId);

                if (group != null)
                {
                    model.UserGroups.Add(user.UserId, group.Name);
                }
            }

            return(View(model));
        }
Example #14
0
        public async Task <List <ResourceOrder> > GetAllOrdersByDepartmentIdAsync(int departmentId)
        {
            var items = await _resourceOrdersRepository.GetAllByDepartmentIdAsync(departmentId);

            if (items != null && items.Any())
            {
                var orders = items.ToList();

                for (int i = 0; i < orders.Count; i++)
                {
                    orders[i].Department = await _departmentsService.GetDepartmentByIdAsync(orders[i].DepartmentId);
                }
            }

            return(new List <ResourceOrder>());
        }
Example #15
0
        public async Task <List <ResourceOrder> > GetOpenAvailableOrdersAsync(int departmentId)
        {
            var orders = new List <ResourceOrder>();

            var departmentSettings = await GetSettingsByDepartmentIdAsync(departmentId);

            var department = await _departmentsService.GetDepartmentByIdAsync(departmentId);

            var mapCenterLocation = await _departmentSettingsService.GetMapCenterCoordinatesAsync(department);

            // Target department does not want to recieve orders
            if (departmentSettings != null && departmentSettings.DoNotReceiveOrders)
            {
                return(orders);
            }

            var allRangeOrders = await _resourceOrdersRepository.GetAllNonDepartmentOpenVisibleOrdersAsync(departmentId);

            orders.AddRange(allRangeOrders.Where(x => (x.OriginLocation.GetDistanceTo(new GeoCoordinate(mapCenterLocation.Latitude.Value, mapCenterLocation.Longitude.Value)) / 1609.344) <= x.Range));

            // TODO: Yea :-(
            //orders.AddRange(await _genericResourceOrderRepository.GetAll().Where(x => x.DepartmentId != departmentId && x.CloseDate == null && x.Visibility == 3).ToListAsync());
            //orders.AddRange(await _resourceOrdersRepository.GetAllOpenOrdersLinked(departmentId));

            return(orders);
        }
Example #16
0
        public async Task <bool> CreateInvitesAsync(Department department, string addingUserId, List <string> emailAddresses, CancellationToken cancellationToken = default(CancellationToken))
        {
            var sendingUser    = _usersService.GetUserById(addingUserId);
            var sendingProfile = await _userProfileService.GetProfileByUserIdAsync(addingUserId);

            for (int i = 0; i < emailAddresses.Count; i++)
            {
                Invite invite = new Invite();
                invite.Code          = Guid.NewGuid();
                invite.DepartmentId  = department.DepartmentId;
                invite.EmailAddress  = emailAddresses[i];
                invite.SendingUserId = addingUserId;
                invite.SentOn        = DateTime.UtcNow;

                await _invitesRepository.SaveOrUpdateAsync(invite, cancellationToken);

                if (invite.Department == null && department != null)
                {
                    invite.Department = department;
                }
                else if (invite.Department == null)
                {
                    invite.Department = await _departmentsService.GetDepartmentByIdAsync(department.DepartmentId);
                }


                await _emailService.SendInviteAsync(invite, sendingProfile.FullName.AsFirstNameLastName, sendingUser.Email);
            }

            return(true);
        }
Example #17
0
        public async Task <bool> SendInviteAsync(Invite invite, string senderName, string senderEmail)
        {
            if (invite == null)
            {
                return(false);
            }

            if (invite.Department == null)
            {
                invite.Department = await _departmentsService.GetDepartmentByIdAsync(invite.DepartmentId);
            }

            await _emailProvider.SendInviteMail(invite.Code.ToString(), invite.Department.Name, invite.EmailAddress, senderName, senderEmail);

            return(true);
        }
Example #18
0
        public async Task <IActionResult> Index()
        {
            var model = new UnitsIndexView();

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId);

            model.CanUserAddUnit = await _limitsService.CanDepartmentAddNewUnit(DepartmentId);

            model.Groups = await _departmentGroupsService.GetAllGroupsForDepartmentAsync(DepartmentId);

            model.Units = await _unitsService.GetUnitsForDepartmentAsync(DepartmentId);

            model.States = await _unitsService.GetAllLatestStatusForUnitsByDepartmentIdAsync(DepartmentId);

            model.UnitStatuses = await _customStateService.GetAllActiveUnitStatesForDepartmentAsync(DepartmentId);

            model.UnitCustomStates = new Dictionary <int, CustomState>();

            foreach (var unit in model.Units)
            {
                var type = await _unitsService.GetUnitTypeByNameAsync(DepartmentId, unit.Type);

                if (type != null && type.CustomStatesId.HasValue)
                {
                    var customStates = await _customStateService.GetCustomSateByIdAsync(type.CustomStatesId.Value);

                    if (customStates != null)
                    {
                        model.UnitCustomStates.Add(unit.UnitId, customStates);
                    }
                }
            }

            return(View(model));
        }
Example #19
0
        public async Task <IActionResult> GetActiveCallsAsRSS(string key)
        {
            if (String.IsNullOrWhiteSpace(key))
            {
                return(null);
            }

            var departmentId = await _departmentSettingsService.GetDepartmentIdForRssKeyAsync(key);

            if (!departmentId.HasValue)
            {
                return(null);
            }

            var department = await _departmentsService.GetDepartmentByIdAsync(departmentId.Value);

            var calls = await _callsService.GetActiveCallsByDepartmentAsync(departmentId.Value);

            var feed = new SyndicationFeed(string.Format("{0} Active Calls", department.Name), string.Format("The active calls for the department {0}", department.Name), new Uri(Config.SystemBehaviorConfig.ResgridBaseUrl));

            feed.Authors.Add(new SyndicationPerson("*****@*****.**"));
            feed.Categories.Add(new SyndicationCategory("Resgrid Calls"));
            feed.Description = new TextSyndicationContent(string.Format("The active calls for the department {0}", department.Name));
            feed.Items       = calls.Select(call => new SyndicationItem(call.Name, call.NatureOfCall, new Uri($"{Config.SystemBehaviorConfig.ResgridBaseUrl}/User/Dispatch/ViewCall?callId=" + call.CallId), call.CallId.ToString(), call.LoggedOn)).ToList();


            var settings = new XmlWriterSettings
            {
                Encoding            = Encoding.UTF8,
                NewLineHandling     = NewLineHandling.Entitize,
                NewLineOnAttributes = true,
                Indent = true
            };

            using (var stream = new MemoryStream())
            {
                using (var xmlWriter = XmlWriter.Create(stream, settings))
                {
                    var rssFormatter = new Rss20FeedFormatter(feed, false);
                    rssFormatter.WriteTo(xmlWriter);
                    xmlWriter.Flush();
                }
                return(File(stream.ToArray(), "application/rss+xml; charset=utf-8"));
            }
        }
Example #20
0
        public async Task <ActionResult <StatusResult> > GetCurrentUserStatus()
        {
            var action = await _actionLogsService.GetLastActionLogForUserAsync(UserId, DepartmentId);

            var userState = await _userStateService.GetLastUserStateByUserIdAsync(UserId);

            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            var statusResult = new StatusResult
            {
                Act = (int)ActionTypes.StandingBy,
                Uid = UserId.ToString(),
                Ste = userState.State,
                Sts = userState.Timestamp.TimeConverter(department)
            };

            if (action == null)
            {
                statusResult.Ats = DateTime.UtcNow.TimeConverter(department);
            }
            else
            {
                statusResult.Act = action.ActionTypeId;
                statusResult.Ats = action.Timestamp.TimeConverter(department);

                if (action.DestinationId.HasValue)
                {
                    if (action.ActionTypeId == (int)ActionTypes.RespondingToScene)
                    {
                        statusResult.Did = action.DestinationId.Value;
                    }
                    else if (action.ActionTypeId == (int)ActionTypes.RespondingToStation)
                    {
                        statusResult.Did = action.DestinationId.Value;
                    }
                    else if (action.ActionTypeId == (int)ActionTypes.AvailableStation)
                    {
                        statusResult.Did = action.DestinationId.Value;
                    }
                }
            }

            return(Ok(statusResult));
        }
Example #21
0
        public async Task <ActionResult <IEnumerable <MessageResult> > > GetMessages()
        {
            var result     = new List <MessageResult>();
            var messages   = (await _messageService.GetInboxMessagesByUserIdAsync(UserId)).OrderBy(x => x.SentOn).OrderByDescending(x => x.SentOn);
            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            foreach (var m in messages)
            {
                var message = new MessageResult();

                message.Mid  = m.MessageId;
                message.Sub  = m.Subject;
                message.Bdy  = StringHelpers.StripHtmlTagsCharArray(m.Body).Truncate(100);
                message.Son  = m.SentOn.TimeConverter(department);
                message.SUtc = m.SentOn;
                message.Typ  = m.Type;

                if (!String.IsNullOrWhiteSpace(m.SendingUserId))
                {
                    message.Uid = m.SendingUserId;
                }

                var respose = m.MessageRecipients.FirstOrDefault(x => x.UserId == UserId);

                if (respose != null)
                {
                    if (String.IsNullOrWhiteSpace(respose.Response))
                    {
                        message.Rsp = true;
                    }

                    message.Ron = respose.ReadOn;
                }
                else
                {
                    message.Ron = m.ReadOn;
                }

                result.Add(message);
            }

            return(Ok(result));
        }
Example #22
0
        public async Task <IActionResult> Index()
        {
            var model = new OrdersIndexView();

            model.YourOrders = new List <ResourceOrder>();
            model.YourOrders.AddRange((await _resourceOrdersService.GetAllOrdersByDepartmentIdAsync(DepartmentId)).OrderByDescending(x => x.OpenDate));

            model.OthersOrders = new List <ResourceOrder>();
            model.OthersOrders.AddRange(await _resourceOrdersService.GetOpenAvailableOrdersAsync(DepartmentId));

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId);

            model.Coordinates = await _departmentSettingsService.GetMapCenterCoordinatesAsync(model.Department);

            return(View(model));
        }
Example #23
0
        public async Task <ActionResult <List <UnitStatusResult> > > GetUnitStatuses(string activeFilter)
        {
            var results = new List <UnitStatusResult>();

            string filter = null;

            string[] activeFilters = null;
            if (!String.IsNullOrWhiteSpace(activeFilter))
            {
                filter        = HttpUtility.UrlDecode(activeFilter);
                activeFilters = filter.Split(char.Parse("|"));
            }
            var filters = await GetFilterOptions();

            var units = await _unitsService.GetAllLatestStatusForUnitsByDepartmentIdAsync(DepartmentId);

            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            foreach (var u in units)
            {
                var unitStatus = new UnitStatusResult();
                unitStatus.Uid = u.UnitId;
                unitStatus.Typ = u.State;
                unitStatus.Tmp = u.Timestamp.TimeConverter(department);

                if (u.DestinationId.HasValue)
                {
                    unitStatus.Did = u.DestinationId.Value;
                }

                if (activeFilters != null)
                {
                    foreach (var afilter in activeFilters)
                    {
                        var text = GetTextValue(afilter, filters);

                        if (afilter.Substring(0, 2) == "G:")
                        {
                            if (u.Unit != null && u.Unit.StationGroup != null && text == u.Unit.StationGroup.Name)
                            {
                                results.Add(unitStatus);
                                break;
                            }
                        }
                    }
                }
                else
                {
                    results.Add(unitStatus);
                }
            }

            return(Ok(results));
        }
Example #24
0
        public async Task <ActionResult <List <DepartmentLinkResult> > > GetActiveDepartmentLinks()
        {
            if (!await _limitsService.CanDepartmentUseLinksAsync(DepartmentId))
            {
                return(new List <DepartmentLinkResult>());
            }

            var linkResults = new List <DepartmentLinkResult>();
            var links       = await _departmentLinksService.GetAllLinksForDepartmentAsync(DepartmentId);

            foreach (var link in links)
            {
                if (link.LinkedDepartmentId == DepartmentId && link.LinkEnabled)
                {
                    var department = await _departmentsService.GetDepartmentByIdAsync(link.DepartmentId);

                    var result = new DepartmentLinkResult();
                    result.LinkId         = link.DepartmentLinkId;
                    result.DepartmentName = department.Name;
                    result.Color          = link.DepartmentColor;
                    result.ShareCalls     = link.DepartmentShareCalls;
                    result.ShareOrders    = link.DepartmentShareOrders;
                    result.SharePersonnel = link.DepartmentSharePersonnel;
                    result.ShareUnits     = link.DepartmentShareUnits;

                    linkResults.Add(result);
                }
            }

            return(linkResults);
        }
Example #25
0
        public async Task <IActionResult> View(int id)
        {
            if (!await _authorizationService.CanUserViewProtocolAsync(UserId, id))
            {
                Unauthorized();
            }

            var model = new ViewProtocolModel();

            model.Protocol = await _protocolsService.GetProtocolByIdAsync(id);

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            return(View(model));
        }
Example #26
0
        public async Task <ActionResult <List <ProtocolResult> > > GetAllProtocols()
        {
            var results    = new List <ProtocolResult>();
            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);


            var protocols = await _protocolsService.GetAllProtocolsForDepartmentAsync(DepartmentId);

            foreach (var p in protocols)
            {
                results.Add(ProtocolResult.Convert(p));
            }

            return(Ok(results));
        }
Example #27
0
        public async Task <IActionResult> View(int noteId)
        {
            ViewNoteView model = new ViewNoteView();

            var note = await _notesService.GetNoteByIdAsync(noteId);

            if (note.DepartmentId != DepartmentId)
            {
                Unauthorized();
            }

            model.Note       = note;
            model.Department = await _departmentsService.GetDepartmentByIdAsync(note.DepartmentId);

            return(View(model));
        }
Example #28
0
        public async Task <IActionResult> Index(string type, string category)
        {
            var model = new IndexView();

            model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            model.Documents = await _documentsService.GetFilteredDocumentsByDepartmentIdAsync(DepartmentId, type, category);

            model.Categories = await _documentsService.GetDistinctCategoriesByDepartmentIdAsync(DepartmentId);

            model.SelectedCategory = category;
            model.SelectedType     = type;

            model.UserId = UserId;

            return(View(model));
        }
Example #29
0
        public async Task <List <Training> > GetTrainingsToNotifyAsync(DateTime currentTime)
        {
            var trainingsToNotify = new List <Training>();

            var trainings = await _trainingRepository.GetAllAsync();

            if (trainings != null && trainings.Any())
            {
                foreach (var training in trainings)
                {
                    if (!training.Notified.HasValue)
                    {
                        trainingsToNotify.Add(training);
                    }
                    else
                    {
                        Department d;
                        if (training.Department != null)
                        {
                            d = training.Department;
                        }
                        else
                        {
                            d = await _departmentService.GetDepartmentByIdAsync(training.DepartmentId);
                        }

                        if (d != null)
                        {
                            var localizedDate = currentTime.TimeConverter(d);
                            var setToNotify   = new DateTime(localizedDate.Year, localizedDate.Month, localizedDate.Day, 10, 0, 0, 0);

                            if (localizedDate == setToNotify.Within(TimeSpan.FromMinutes(13)) && training.ToBeCompletedBy.HasValue)
                            {
                                if (localizedDate.AddDays(1).ToShortDateString() == training.ToBeCompletedBy.Value.ToShortDateString())
                                {
                                    trainingsToNotify.Add(training);
                                }
                            }
                        }
                    }
                }
            }

            return(trainingsToNotify);
        }
Example #30
0
        public async Task <Coordinates> GetMapCenterCoordinatesForGroupAsync(int departmentGroupId)
        {
            Coordinates coordinates = null;

            var departmentGroup = await GetGroupByIdAsync(departmentGroupId);

            var department = await _departmentsService.GetDepartmentByIdAsync(departmentGroup.DepartmentId);

            if (departmentGroup.Address != null)
            {
                coordinates = new Coordinates();
                string coordinateString = await _geoLocationProvider.GetLatLonFromAddress(string.Format("{0} {1} {2} {3} {4}", departmentGroup.Address.Address1,
                                                                                                        departmentGroup.Address.City, departmentGroup.Address.State, departmentGroup.Address.PostalCode,
                                                                                                        departmentGroup.Address.Country));

                var coords = coordinateString.Split(char.Parse(","));
                coordinates.Latitude  = double.Parse(coords[0]);
                coordinates.Longitude = double.Parse(coords[1]);
            }

            if (coordinates == null && department.Address != null)
            {
                coordinates = new Coordinates();
                string coordinateString = await _geoLocationProvider.GetLatLonFromAddress(string.Format("{0} {1} {2} {3} {4}", department.Address.Address1,
                                                                                                        department.Address.City, department.Address.State, department.Address.PostalCode, department.Address.Country));

                var coords = coordinateString.Split(char.Parse(","));
                coordinates.Latitude  = double.Parse(coords[0]);
                coordinates.Longitude = double.Parse(coords[1]);
            }

            var gpsCoordinates = await _departmentSettingsService.GetBigBoardCenterGpsCoordinatesDepartmentAsync(departmentGroup.DepartmentId);

            if (coordinates == null && !string.IsNullOrWhiteSpace(gpsCoordinates))
            {
                coordinates = new Coordinates();

                var coords = gpsCoordinates.Split(char.Parse(","));
                coordinates.Latitude  = double.Parse(coords[0]);
                coordinates.Longitude = double.Parse(coords[1]);
            }


            return(coordinates);
        }