public async Task SaveRequest(RequestDto model) { var member = await DbContext.GetMemberByMemberIdAsync(model.CreatedByMember); var assignedToProvider = await DbContext.GetProviderByProviderIdAsync(model.AssignedProviderId); var requestProvider = await DbContext.GetProviderByProviderIdAsync(model.RequestProvider.ProviderId); var request = new Request { Comment = model.Comment, AssignedToProviderId = model.AssignedProviderId, AssignedToProvider = assignedToProvider, CreatedByMember = model.CreatedByMember, CreatedDt = model.CreatedDt, DueEndDt = model.DueEndDt, DueStartDt = model.DueStartDt, MemberCreator = member, Status = model.Status, ModifiedDt = DateTime.Now, RequestDescription = model.RequestDescription, Id = model.Id, RequestProvider = requestProvider, LockedByProvider = model.LockedByProvider, LockeDt = model.LockeDt, }; await DbContext.SaveRequest(request); }
public async Task SaveRequest(Request request) { Requests.AddOrUpdate(request); await SaveChangesAsync(); }
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; }