public async Task <IActionResult> Edit(int id, AdminEditViewModel model, ProfileEditViewModel myprofile, CompletedEditViewModel admin) { var FullName = _context.Request.FindAsync(id).Result.CustomerName; var phone = _context.Request.FindAsync(id).Result.PhoneNumber; var address = _context.Request.FindAsync(id).Result.Address; var membership = _context.Request.FindAsync(id).Result.MembershipType; var requestStatus = _context.Request.FindAsync(id).Result.RequestStatus; var adminEmail = "*****@*****.**"; var Userid = _context.Request.FindAsync(id).Result.ApplicationUserId; var prevBal = _context.Users.FindAsync(Userid).Result.MyBalance; var date = _context.Users.FindAsync(Userid).Result.DateRegistered; var email = _context.Users.FindAsync(Userid).Result.Email; var fName = _context.Users.FindAsync(Userid).Result.FirstName; var lName = _context.Users.FindAsync(Userid).Result.LastName; var password = _context.Users.FindAsync(Userid).Result.PasswordHash; var features = _context.Users.FindAsync(Userid).Result.Features; var property = _context.Users.FindAsync(Userid).Result.PropertyType; if (requestStatus == RequestStatus.cancelled || requestStatus == RequestStatus.pending) { if (ModelState.IsValid && model.RequestStatus == RequestStatus.completed) { var request = await _context.Request.FindAsync(id); request.CustomerName = FullName; request.Address = address; request.PhoneNumber = phone; request.MembershipType = _context.Request.FindAsync(id).Result.MembershipType; request.RequestId = _context.Request.FindAsync(id).Result.RequestId; request.ServiceType = _context.Request.FindAsync(id).Result.ServiceType; request.ScheduleTime = _context.Request.FindAsync(id).Result.ScheduleTime; request.NeededService = _context.Request.FindAsync(id).Result.NeededService; request.Comment = _context.Request.FindAsync(id).Result.Comment; request.ApplicationUserId = Userid; request.RefNo = _context.Request.FindAsync(id).Result.RefNo; //request.RequestStatus = _context.Request.Find(request.RequestStatus) request.AdminComment = model.AdminComment; request.RequestStatus = model.RequestStatus; request.Cost = model.Cost; request.CostDetails = model.CostDetails; request.PhotoPath = _context.Request.FindAsync(id).Result.PhotoPath; request.VideoPath = _context.Request.FindAsync(id).Result.VideoPath; request.CancellationRemark = _context.Request.FindAsync(id).Result.CancellationRemark; //request.ApplicationUserId = _context.Request.FindAsync(Request).Result.ApplicationUserId; var profile = await _userManager.FindByIdAsync(request.ApplicationUserId); //profile.Id = request.ApplicationUserId; profile.CustomerName = FullName; profile.FirstName = fName; profile.LastName = lName; profile.Address = address; profile.PhoneNumber = phone; profile.Features = features; profile.PropertyType = property; profile.PasswordHash = password; profile.Membership = membership; profile.Email = email; profile.DateRegistered = date; if (profile.Membership == MembershipType.SUB) { profile.MyBalance = prevBal - model.Cost; request.PaymentStatus = PaymentStatus.paid; } else { profile.MyBalance = prevBal; } _context.Update(request); _context.Update(profile); await _context.SaveChangesAsync(); var callbackUrl = Url.Action("Details", "UserRequest", new { id = request.RequestId }, protocol: HttpContext.Request.Scheme); await _emailSend.SendEmailAsync(email, "Request Completed", $"Dear " + profile.FirstName + $" <br />" + $" Your Request has been completed" + $" <br />" + $"click the button below to check the details and cost" + $" <br /> " + $" <br /> " + $" <br /> " + $" <a style=\" text-decoration: none; color: #fff; background: #101522; padding: 7px 22px; margin-right: 10px; border-radius: 50px; border: 2px solid #f82249;font-weight: 600; margin-left: 8px; margin-top: 2px; margin-bottom: 2px; line-height: 1.5;font-size: 13px;\" href ='{callbackUrl}'>Check My Request</a>" + $" <br />" + $" " + $" <br />" ); var admincallbackUrl = Url.Action("Edit", "Request", new { id = request.RequestId }, protocol: HttpContext.Request.Scheme); await _emailSend.SendEmailAsync(adminEmail, "Request Completed", $" Request from " + request.CustomerName + $" has been completed" + $" <br />" + $"click the button below to check the details of the request" + $" <br /> " + $" <br /> " + $" <br /> " + $" <a style=\" text-decoration: none; color: #fff; background: #101522; padding: 7px 22px; margin-right: 10px; border-radius: 50px; border: 2px solid #f82249;font-weight: 600; margin-left: 8px; margin-top: 2px; margin-bottom: 2px; line-height: 1.5;font-size: 13px;\" href ='{admincallbackUrl}'>Check Request</a>" + $" <br />" + $" " + $" <br />" ); return(RedirectToAction("Index", new { id = request.RequestId })); } ModelState.AddModelError(string.Empty, "Please change Request Status to Completed and fill all fields "); return(View(model)); } if (ModelState.IsValid) { var request = await _context.Request.FindAsync(id); request.CustomerName = FullName; request.Address = address; request.PhoneNumber = phone; request.MembershipType = _context.Request.FindAsync(id).Result.MembershipType; request.RequestId = _context.Request.FindAsync(id).Result.RequestId; request.ServiceType = _context.Request.FindAsync(id).Result.ServiceType; request.ScheduleTime = _context.Request.FindAsync(id).Result.ScheduleTime; request.NeededService = _context.Request.FindAsync(id).Result.NeededService; request.Comment = _context.Request.FindAsync(id).Result.Comment; request.ApplicationUserId = Userid; request.RefNo = _context.Request.FindAsync(id).Result.RefNo; request.PaymentStatus = _context.Request.FindAsync(id).Result.PaymentStatus; //request.RequestStatus = _context.Request.Find(request.RequestStatus) request.AdminComment = admin.AdminComment; request.RequestStatus = _context.Request.FindAsync(id).Result.RequestStatus; request.Cost = _context.Request.FindAsync(id).Result.Cost; request.CostDetails = admin.CostDetails; request.PhotoPath = _context.Request.FindAsync(id).Result.PhotoPath; request.VideoPath = _context.Request.FindAsync(id).Result.VideoPath; request.CancellationRemark = _context.Request.FindAsync(id).Result.CancellationRemark; //request.ApplicationUserId = _context.Request.FindAsync(Request).Result.ApplicationUserId; var profile = await _userManager.FindByIdAsync(request.ApplicationUserId); //profile.Id = request.ApplicationUserId; profile.CustomerName = FullName; profile.FirstName = fName; profile.LastName = lName; profile.Address = address; profile.PhoneNumber = phone; profile.Features = features; profile.PropertyType = property; profile.PasswordHash = password; profile.Membership = membership; profile.Email = email; profile.DateRegistered = date; profile.MyBalance = prevBal; _context.Update(request); _context.Update(profile); await _context.SaveChangesAsync(); var callbackUrl = Url.Action("Details", "UserRequest", new { id = request.RequestId }, protocol: HttpContext.Request.Scheme); await _emailSend.SendEmailAsync(email, "Request Details updated", $"Dear " + profile.FirstName + $" <br />" + $" Your Request details has been updated" + $" <br />" + $"click the button below to check the details and cost" + $" <br /> " + $" <br /> " + $" <br /> " + $" <a style=\" text-decoration: none; color: #fff; background: #101522; padding: 7px 22px; margin-right: 10px; border-radius: 50px; border: 2px solid #f82249;font-weight: 600; margin-left: 8px; margin-top: 2px; margin-bottom: 2px; line-height: 1.5;font-size: 13px;\" href ='{callbackUrl}'>Check My Request</a>" + $" <br />" + $" " + $" <br />" ); var admincallbackUrl = Url.Action("Edit", "Request", new { id = request.RequestId }, protocol: HttpContext.Request.Scheme); await _emailSend.SendEmailAsync(adminEmail, "Request Details Updated", $" Request from " + request.CustomerName + $"has been updated" + $" <br />" + $"click the button below to check the details of the request" + $" <br /> " + $" <br /> " + $" <br /> " + $" <a style=\" text-decoration: none; color: #fff; background: #101522; padding: 7px 22px; margin-right: 10px; border-radius: 50px; border: 2px solid #f82249;font-weight: 600; margin-left: 8px; margin-top: 2px; margin-bottom: 2px; line-height: 1.5;font-size: 13px;\" href ='{admincallbackUrl}'>Check Request</a>" + $" <br />" + $" " + $" <br />" ); return(RedirectToAction("Index", new { id = request.RequestId })); } return(View(admin)); }
// GET: Request/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var request = await _context.Request.FindAsync(id); if (request.RequestStatus == RequestStatus.pending || request.RequestStatus == RequestStatus.cancelled) { AdminEditViewModel adminEditViewModel = new AdminEditViewModel { Id = request.RequestId, NeededService = request.NeededService, ServiceType = request.ServiceType, Comment = request.Comment, ExistingPhotoPath = request.PhotoPath, CustomerName = request.CustomerName, PhoneNumber = request.PhoneNumber, Address = request.Address, ScheduleTime = request.ScheduleTime, ApplicationUserId = request.ApplicationUserId, RefNo = request.RefNo, MembershipType = request.MembershipType, RequestStatus = request.RequestStatus, AdminComment = request.AdminComment, Cost = request.Cost, CostDetails = request.CostDetails, ExistingVideoPath = request.VideoPath, PaymentStatus = request.PaymentStatus }; return(View(adminEditViewModel)); } CompletedEditViewModel completedEditViewModel = new CompletedEditViewModel { Id = request.RequestId, NeededService = request.NeededService, ServiceType = request.ServiceType, Comment = request.Comment, ExistingPhotoPath = request.PhotoPath, CustomerName = request.CustomerName, PhoneNumber = request.PhoneNumber, Address = request.Address, ScheduleTime = request.ScheduleTime, ApplicationUserId = request.ApplicationUserId, RefNo = request.RefNo, MembershipType = request.MembershipType, RequestStatus = request.RequestStatus, AdminComment = request.AdminComment, Cost = request.Cost, CostDetails = request.CostDetails, ExistingVideoPath = request.VideoPath, CancellationRemark = request.CancellationRemark, PaymentStatus = request.PaymentStatus }; return(View("CompletedDetails", completedEditViewModel)); }