Exemple #1
0
        public static SafetyDiscussionViewModel GetViewModel(SafetyDiscussionInfo safetyDiscussionInfo, bool resolveIDs)
        {
            if (safetyDiscussionInfo != null)
            {
                var safetyDiscViewModel = new SafetyDiscussionViewModel
                {
                    SafetyDiscussionID = safetyDiscussionInfo.SafetyDiscussionID,
                    Date       = safetyDiscussionInfo.SafetyDiscussionDate,
                    Subject    = safetyDiscussionInfo.SafetyDiscussionSubject,
                    Outcomes   = safetyDiscussionInfo.SafetyDiscussionOutcomes,
                    Observer   = safetyDiscussionInfo.SafetyDiscussionObserver,
                    Colleagues = safetyDiscussionInfo.SafetyDiscussionColleagues.Split('|'),
                    Location   = safetyDiscussionInfo.SafetyDiscussionLocation
                };

                if (resolveIDs)
                {
                    var observerUser = UserInfo.Provider.Get(safetyDiscussionInfo.SafetyDiscussionObserver);
                    safetyDiscViewModel.ObserverFullName = observerUser != null ? observerUser.FullName : "";

                    var colleaguesIDs  = safetyDiscussionInfo.SafetyDiscussionColleagues;
                    var colleagueNames = new List <string>();
                    if (!string.IsNullOrEmpty(colleaguesIDs))
                    {
                        var splitIDs = colleaguesIDs.Split('|');
                        if (splitIDs != null && splitIDs.Length > 0)
                        {
                            foreach (var colleagueID in splitIDs)
                            {
                                if (int.TryParse(colleagueID, out int userId))
                                {
                                    var userInfo = UserInfo.Provider.Get(userId);
                                    if (userInfo != null && !string.IsNullOrEmpty(userInfo.FullName))
                                    {
                                        colleagueNames.Add(userInfo.FullName);
                                    }
                                }
                            }
                        }
                    }
                    safetyDiscViewModel.ColleagueNames = colleagueNames.Count > 0 ? colleagueNames.Join(", ") : "";

                    var location = LocationInfo.Provider.Get(safetyDiscussionInfo.SafetyDiscussionLocation);
                    safetyDiscViewModel.LocationString = location != null ? $"{location.LocationDisplayName} - {location.LocationAddress}" : "";
                }

                return(safetyDiscViewModel);
            }

            return(null);
        }
Exemple #2
0
        public ActionResult Create(SafetyDiscussionViewModel sdvm)
        {
            if (!ModelState.IsValid)
            {
                return(View(sdvm));
            }

            try
            {
                var userInfo = UserInfo.Provider.Get(User.Identity.Name);

                //Technically we should also do validation on the user ids passed in to make
                //sure they are all associated with users who have the appropriate role. We
                //should also do some extra validation on date/location - and potentially
                //do sanitization on Subject/Outcomes (although there are issues associated
                //with allowing rich text input and then trying to clean out undesirable
                //elements - markdown would probably be a better option)
                var newDiscussion = new SafetyDiscussionInfo
                {
                    SafetyDiscussionCreatedBy = userInfo.UserID,
                    SafetyDiscussionObserver  = sdvm.Observer,
                    SafetyDiscussionDate      = sdvm.Date,
                    SafetyDiscussionLocation  = sdvm.Location,
                    SafetyDiscussionSubject   = sdvm.Subject,
                    SafetyDiscussionOutcomes  = sdvm.Outcomes
                };
                if (sdvm.Colleagues != null && sdvm.Colleagues.Length > 0)
                {
                    newDiscussion.SafetyDiscussionColleagues = sdvm.Colleagues.Join("|");
                }
                newDiscussion.Insert();

                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(View(sdvm));
            }
        }