Beispiel #1
0
        public async Task<ServiceResult> SubmitReview(ReviewDto review)
        {
            var result = new ServiceResult();
            try
            {
                var provider = await DbContext.GetProviderByProviderIdAsync(review.ProviderId);
                var member = await DbContext.GetMemberByMemberIdAsync(review.MemberId);
                var rev = new Review
                {
                    Id = review.ReviewId,
                    Member = member,
                    Provider = provider,
                    CreateDt = review.CreateDt,
                    Feedback = review.Feedback,
                    Mark = review.Mark,
                    MemberId = member.Id,
                    ProviderId = provider.Id
                };
                await DbContext.SaveReview(rev);
                result.Success = true;
                result.Messages = new List<string> { "Your review is successfully submited." };
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Messages = new List<string> { "Internal server error.", $"Exception is: {ex.ToString()}" };
            }

            return result;
        }
Beispiel #2
0
        public async Task<ServiceResult> SubmitRequest(RequestDto model, MemberDto requestor)
        {
            var result = new ServiceResult();
            try
            {
                model.CreatedByMember = requestor.MemberId;
                if (model.DueEndDt <= model.DueStartDt)
                {
                    result.Success = false;
                    result.Messages = new List<string> { "End date is bigger than start date. Please change." };
                    return result;
                }
                var activeStatuses = new[] { RequestStatus.Locked, RequestStatus.Started, RequestStatus.Pending };

                var memberRequests = (await DbContext.GetRequestsByMemberIdAsync(requestor.MemberId)).Where(c => c.Status != RequestStatus.Closed).ToList();
                if (memberRequests.Any(memberRequest => (model.DueStartDt >= memberRequest.DueStartDt && model.DueStartDt <= memberRequest.DueEndDt ||
                                                        model.DueEndDt > memberRequest.DueStartDt && model.DueEndDt <= memberRequest.DueEndDt) && activeStatuses.Contains(memberRequest.Status)))
                {
                    result.Success = false;
                    result.Messages = new List<string> { "You have another request with crossing time interval please change time intervals." };
                    return result;
                }

                var member = await DbContext.GetMemberByMemberIdAsync(model.CreatedByMember);
                var assignedToProvider = await DbContext.GetProviderByProviderIdAsync(model.AssignedProviderId);
                var request = new Request
                {
                    Comment = model.Comment,
                    AssignedToProviderId = model.AssignedProviderId,
                    AssignedToProvider = assignedToProvider,
                    CreatedByMember = model.CreatedByMember,
                    CreatedDt = DateTime.Now,
                    DueEndDt = model.DueEndDt,
                    DueStartDt = model.DueStartDt,
                    MemberCreator = member,
                    Status = model.Status,
                    ModifiedDt = DateTime.Now,
                    RequestDescription = model.RequestDescription,
                };
                await DbContext.SaveRequest(request);
                result.Success = true;
                result.Messages = new List<string> { "Your request is successfully submited." };
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Messages = new List<string> { "Internal server error.", $"Exception is: {ex.ToString()}" };
            }

            return result;
        }
Beispiel #3
0
        public async Task<ServiceResult> LockRequestByIdAsync(int reqId, string userId)
        {
            var result = new ServiceResult();
            try
            {
                var provider = await DbContext.GetProviderByUserIdAsync(userId);
                var request = await DbContext.GetRequestByIdAsync(reqId);

                var providerRequests = await GetRequestsByProviderIdAsync(provider.Id);
                foreach (var providerRequest in providerRequests)
                {
                    if (providerRequest.Status == RequestStatus.Locked && providerRequest.DueEndDt <= DateTime.Now)
                    {
                        // Colse this request and report an error.
                        providerRequest.Status = RequestStatus.CanceledByMember;
                        await SaveRequest(providerRequest);
                        result.Success = false;
                        result.Messages = new List<string> { "You cannot start an outdated consultation." };
                    }
                    if (providerRequest.Status == RequestStatus.Locked && providerRequest.DueEndDt > DateTime.Now &&
                        providerRequest.DueStartDt <= DateTime.Now)
                    {
                        result.Success = false;
                        result.Messages = new List<string> { "You cannot lock this request you have ongoing locked requests." };
                    }
                }
                if (request.DueEndDt <= DateTime.Now)
                {
                    request.Status = RequestStatus.Closed;
                    await DbContext.SaveRequest(request);

                    result.Success = false;
                    result.Messages = new List<string> { "You cannot start an outdated consultation. Please create new request. This request will be automatically closed." };
                }
                request.Status = RequestStatus.Locked;
                request.LockedByProvider = provider.Id;
                request.LockeDt = DateTime.Now;
                request.RequestProvider = provider;

                await DbContext.SaveRequest(request);
                result.Success = true;
                result.Messages = new List<string> { "The request is successfully locked." };
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Messages = new List<string> { "Internal server error.", $"Exception is: {ex.ToString()}" };
            }
            return result;
        }