Пример #1
0
        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));
        }
Пример #2
0
        // 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));
        }