Ejemplo n.º 1
0
        public void CreateChildcareRequest(ChildcareRequestDto request, String token)
        {
            var mpRequest          = request.ToMPChildcareRequest();
            var childcareRequestId = _childcareRequestService.CreateChildcareRequest(mpRequest);

            _childcareRequestService.CreateChildcareRequestDates(childcareRequestId, mpRequest, token);
            try
            {
                var childcareRequest = _childcareRequestService.GetChildcareRequest(childcareRequestId, token);
                SendChildcareRequestNotification(childcareRequest);
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Save Request failed"), ex);
            }
        }
Ejemplo n.º 2
0
        public void UpdateChildcareRequest(ChildcareRequestDto request, string token)
        {
            var mpRequest = request.ToMPChildcareRequest();

            _childcareRequestService.UpdateChildcareRequest(mpRequest);
            //delete the current childcare request dates
            _childcareRequestService.DeleteAllChildcareRequestDates(request.ChildcareRequestId);

            //add the new dates
            _childcareRequestService.CreateChildcareRequestDates(request.ChildcareRequestId, mpRequest, token);
            try
            {
                var childcareRequest = _childcareRequestService.GetChildcareRequest(request.ChildcareRequestId, token);
                SendChildcareRequestNotification(childcareRequest);
            }
            catch (Exception ex)
            {
                _logger.Error("Update Request failed", ex);
            }
        }
Ejemplo n.º 3
0
        public void RejectChildcareRequest(int childcareRequestId, ChildcareRequestDto childcareRequest, string token)
        {
            try
            {
                //set the approved column for dates to false
                var childcareDates = _childcareRequestService.GetChildcareRequestDates(childcareRequestId);
                foreach (var ccareDates in childcareDates)
                {
                    _childcareRequestService.DecisionChildcareRequestDate(ccareDates.ChildcareRequestDateId, false);
                }

                _childcareRequestService.DecisionChildcareRequest(childcareRequestId, _configurationWrapper.GetConfigIntValue("ChildcareRequestRejected"), childcareRequest.ToMPChildcareRequest());
                var templateId = _configurationWrapper.GetConfigIntValue("ChildcareRequestRejectionNotificationTemplate");
                SendChildcareRequestDecisionNotification(childcareRequestId, childcareDates, childcareRequest, templateId, token);
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Update Request failed"), ex);
                throw new Exception("Reject Childcare failed", ex);
            }
        }
Ejemplo n.º 4
0
        // TODO: Should we merge childcareRequestId into the childcareRequestDto?
        public void ApproveChildcareRequest(int childcareRequestId, ChildcareRequestDto childcareRequest, string token)
        {
            try
            {
                var request          = GetChildcareRequestForReview(childcareRequestId, token);
                var datesFromRequest = _childcareRequestService.GetChildcareRequestDates(childcareRequestId);
                var requestedDates   = childcareRequest.DatesList.Select(date => GetChildcareDateFromList(datesFromRequest, date)).ToList();
                if (requestedDates.Count == 0)
                {
                    throw new ChildcareDatesMissingException(childcareRequestId);
                }
                var events = _childcareRequestService.FindChildcareEvents(childcareRequestId, requestedDates, request);

                var childcareEvents = GetChildcareEventsfortheDates(events, requestedDates, request);
                var missingDates    = requestedDates.Where(childcareRequestDate => !childcareEvents.ContainsKey(childcareRequestDate.ChildcareRequestDateId)).ToList();
                if (missingDates.Count > 0)
                {
                    var dateList = missingDates.Aggregate("", (current, date) => current + ", " + date.RequestDate.ToShortDateString());
                    _logger.Debug("Missing events for dates: ${dateList}");
                    var dateMap = missingDates.Select(c => c.RequestDate).ToList();
                    throw new EventMissingException(dateMap);
                }

                //set the approved column for dates to true
                foreach (var ccareDates in requestedDates)
                {
                    _childcareRequestService.DecisionChildcareRequestDate(ccareDates.ChildcareRequestDateId, true);
                    var eventId    = childcareEvents.Where((ev) => ev.Key == ccareDates.ChildcareRequestDateId).Select((ev) => ev.Value).SingleOrDefault();
                    var eventGroup = new MpEventGroup()
                    {
                        Closed = false, Created = true, EventId = eventId, GroupId = request.GroupId
                    };
                    var currentGroups = _eventService.GetGroupsForEvent(eventId).Select((g) => g.GroupId).ToList();
                    if (!currentGroups.Contains(request.GroupId))
                    {
                        _eventService.CreateEventGroup(eventGroup, token);
                    }
                }

                var requestStatusId = GetApprovalStatus(datesFromRequest, requestedDates);
                _childcareRequestService.DecisionChildcareRequest(childcareRequestId, requestStatusId, childcareRequest.ToMPChildcareRequest());
                var templateId = GetApprovalEmailTemplate(requestStatusId);
                SendChildcareRequestDecisionNotification(childcareRequestId, requestedDates, childcareRequest, templateId, token);
            }
            catch (EventMissingException ex)
            {
                throw;
            }
            catch (ChildcareDatesMissingException ex)
            {
                throw;
            }
            catch (DuplicateChildcareEventsException ex)
            {
                throw;
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Update Request failed"), ex);
                throw new Exception("Approve Childcare failed", ex);
            }
        }