Пример #1
0
        public ActionResult Index(int pageNumber = 1, RefundRequestListModelFilter filter = null)
        {
            int totalRecords;

            if (filter == null)
            {
                filter = new RefundRequestListModelFilter()
                {
                    RefundRequestStatus = (int)RequestStatus.Pending
                }
            }
            ;
            var model = _refundRequestService.GetPendingRequests(pageNumber, _pageSize, filter, out totalRecords);

            if (model == null)
            {
                model = new RefundRequestListModel();
            }
            model.Filter = filter;

            var currentAction          = ControllerContext.RouteData.Values["action"].ToString();
            Func <int, string> urlFunc =
                pn =>
                Url.Action(currentAction,
                           new
            {
                pageNumber = pn,
                filter.CustomerName,
                filter.DateType,
                filter.FromDate,
                filter.ToDate,
                filter.RefundType,
                filter.RefundRequestStatus,
                filter.CustomerId
            });

            model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);
            return(View(model));
        }
Пример #2
0
        public RefundRequestListModel Create(IEnumerable <RefundRequest> requests, IEnumerable <Customer> customers, IEnumerable <Event> events, IEnumerable <Host> hosts,
                                             IEnumerable <OrderedPair <long, string> > idNamePairs, IEnumerable <OrganizationRoleUser> orgRoleUsers, IEnumerable <Role> roles, IEnumerable <Order> orders,
                                             IEnumerable <EventCustomer> eventCustomers, IEnumerable <EventAppointmentCancellationLog> appointmentCancellationLogs)
        {
            var model       = new RefundRequestListModel();
            var basicModels = new RefundRequestBasicInfoModel[requests.Count()];

            int index = 0;

            foreach (var request in requests)
            {
                var requestCustomer      = customers.Where(c => c.CustomerId == request.CustomerId).SingleOrDefault();
                var requestCustomerEvent = events.Where(e => e.Id == request.EventId).SingleOrDefault();
                var host        = hosts.Where(h => h.Id == requestCustomerEvent.HostId).SingleOrDefault();
                var idNamePair  = idNamePairs.Where(p => p.FirstValue == request.RequestedByOrgRoleUserId).FirstOrDefault();
                var orgRoleUser = orgRoleUsers.Where(oru => oru.Id == request.RequestedByOrgRoleUserId).FirstOrDefault();
                var role        = roles.Where(r => r.Id == orgRoleUser.RoleId).SingleOrDefault();

                OrderedPair <long, string> processedByidNamePair = null;
                Role processedByRole = null;
                if (request.RefundRequestResult != null && request.RefundRequestResult.ProcessedByOrgRoleUserId > 0)
                {
                    processedByidNamePair = idNamePairs.Where(p => p.FirstValue == request.RefundRequestResult.ProcessedByOrgRoleUserId).FirstOrDefault();

                    orgRoleUser = orgRoleUsers.Where(oru => oru.Id == request.RefundRequestResult.ProcessedByOrgRoleUserId).FirstOrDefault();

                    processedByRole = roles.Where(r => r.Id == orgRoleUser.RoleId).SingleOrDefault();
                }

                var cancellationReason = "N/A";
                var subReason          = string.Empty;

                if (!eventCustomers.IsNullOrEmpty() && !appointmentCancellationLogs.IsNullOrEmpty())
                {
                    var cancellationLogs = (from acl in appointmentCancellationLogs
                                            join ec in eventCustomers on acl.EventCustomerId equals ec.Id
                                            where ec.EventId == request.EventId && ec.CustomerId == request.CustomerId && request.RequestedOn.AddMinutes(2) > acl.DateCreated && request.RequestedOn.AddMinutes(-2) < acl.DateCreated
                                            select acl).FirstOrDefault();

                    if (cancellationLogs != null)
                    {
                        cancellationReason = ((CancelAppointmentReason)cancellationLogs.ReasonId).GetDescription();
                        if (cancellationLogs.SubReasonId.HasValue && cancellationLogs.SubReasonId.Value > 0)
                        {
                            subReason = ((CancelAppointmentSubReason)cancellationLogs.SubReasonId).GetDescription();
                        }
                    }
                }

                var order = orders.Single(o => o.Id == request.OrderId);

                var bookedByidNamePair = idNamePairs.First(p => p.FirstValue == order.DataRecorderMetaData.DataRecorderCreator.Id);
                orgRoleUser = orgRoleUsers.First(oru => oru.Id == order.DataRecorderMetaData.DataRecorderCreator.Id);
                var bookedByRole = roles.Where(r => r.Id == orgRoleUser.RoleId).Single();

                var basicModel = new RefundRequestBasicInfoModel
                {
                    CustomerId            = request.CustomerId,
                    EventId               = request.EventId,
                    OrderId               = request.OrderId,
                    RequestId             = request.Id,
                    ReasonforRefund       = request.Reason,
                    RefundRequestType     = request.RefundRequestType,
                    EventDate             = requestCustomerEvent != null ? (DateTime?)requestCustomerEvent.EventDate : null,
                    HostAddress           = host.Address,
                    HostName              = host.OrganizationName,
                    CustomerName          = requestCustomer != null ? requestCustomer.NameAsString : string.Empty,
                    RequestedRefundAmount = request.RequestedRefundAmount,
                    RequestedOn           = request.RequestedOn,
                    RequestedBy           = idNamePair.SecondValue,
                    RequestedByRole       = role.DisplayName,
                    BookedBy              = bookedByidNamePair.SecondValue,
                    BookedByRole          = bookedByRole.Id == (long)Roles.Customer ? "Self" : bookedByRole.DisplayName,
                    Status                 = (RequestStatus)request.RequestStatus,
                    RequestProcessedBy     = processedByidNamePair != null ? processedByidNamePair.SecondValue : string.Empty,
                    RequestProcessedByRole = processedByRole != null ? processedByRole.DisplayName : string.Empty,
                    RequestProcessedOn     = request.RefundRequestResult != null ? (DateTime?)request.RefundRequestResult.ProcessedOn : null,
                    RequestProcessedNotes  = request.RefundRequestResult != null ? request.RefundRequestResult.Notes : string.Empty,
                    RequestResultType      = request.RefundRequestResult != null ? (RequestResultType?)request.RefundRequestResult.RequestResultType : null,
                    CancellationReason     = cancellationReason,
                    SubReason              = subReason,
                };

                basicModels[index++] = basicModel;
            }

            model.Collection = basicModels;
            return(model);
        }