示例#1
0
 public static Person GetPersonByJobQuoteId(JobAcceptedModel jobModel)
 {
     using (var db = new KeysEntities())
     {
         var ownerId = db.TenantJobRequest.Where(x => x.Id == jobModel.JobRequestId).Select(y => y.Property.OwnerProperty.FirstOrDefault().Person.Id).FirstOrDefault();
         return(db.Person.FirstOrDefault(x => x.Id == ownerId));
     }
 }
示例#2
0
 public static Person GetPersonByJobQuoteId(JobAcceptedModel jobModel)
 {
     using (var db = new KeysEntities())
     {
         var ownerId = db.JobQuote.Where(x => x.Id == jobModel.QuoteId).Select(y => y.ProviderId).FirstOrDefault();
         return(db.Person.FirstOrDefault(x => x.Id == ownerId));
     }
 }
示例#3
0
        public static ServiceResponseResult AcceptQuote(JobAcceptedModel model, Login login)
        {
            using (var db = new KeysEntities())
            {
                var quote = db.JobQuote.FirstOrDefault(x => x.Id == model.QuoteId);
                if (quote == null)
                {
                    return(new ServiceResponseResult {
                        IsSuccess = false, ErrorMessage = "Can note find quote"
                    });
                }
                quote.IsViewed = true;
                quote.Status   = "accepted";
                var job = new Job
                {
                    ProviderId     = quote.ProviderId,
                    PropertyId     = quote.TenantJobRequest.PropertyId,
                    AcceptedQuote  = quote.Amount,
                    JobDescription = model.JobDescription,
                    JobRequestId   = model.JobRequestId,
                    JobStatusId    = 2,
                    UpdatedBy      = login.Email,
                    CreatedOn      = DateTime.UtcNow,
                    UpdatedOn      = DateTime.UtcNow,
                    CreatedBy      = login.Email,
                    OwnerId        = login.Id
                };
                db.Job.Add(job);
                var marketJob = db.TenantJobRequest.FirstOrDefault(x => x.Id == model.JobRequestId);

                if (marketJob == null)
                {
                    return(new ServiceResponseResult {
                        IsSuccess = false, ErrorMessage = "Can not find job!"
                    });
                }
                marketJob.JobStatusId = 5;
                var otherQuotes = db.JobQuote.Where(x => x.JobRequestId == model.JobRequestId && x.Id != model.QuoteId).ToList();
                otherQuotes.ForEach(x => x.Status = "unsuccessful");
                try
                {
                    db.SaveChanges();
                    return(new ServiceResponseResult {
                        IsSuccess = true
                    });
                }
                catch (Exception ex)
                {
                    return(new ServiceResponseResult {
                        IsSuccess = false, ErrorMessage = _error
                    });
                }
            }
        }
示例#4
0
        public async Task <ActionResult> AccceptQuote(JobAcceptedModel jobModel)
        {
            var user = User.Identity.Name;

            if (String.IsNullOrEmpty(user))
            {
                return(Json(new { Success = false, Msg = "User not found!" }));
            }
            var login  = AccountService.GetLoginByEmail(user);
            var result = JobService.AcceptQuote(jobModel, login);

            if (result.IsSuccess)
            {
                var serviceProviderPersonDetails = JobService.GetPersonByJobQuoteId(jobModel);
                var serviceProviderLoginDetails  = AccountService.GetLoginById(serviceProviderPersonDetails.Id);
                var jobDetails = JobService.GetMarketJobById(jobModel.JobRequestId);
                var nvc        = new NameValueCollection();
                nvc.Add("userAction", "2");

                string             url  = UtilService.UrlGenerator(System.Web.HttpContext.Current.Request, "/Jobs/Home", UtilService.ToQueryString(nvc));
                SendGridEmailModel mail = new SendGridEmailModel
                {
                    RecipentName  = serviceProviderPersonDetails.FirstName,
                    ButtonText    = "",
                    ButtonUrl     = url,
                    RecipentEmail = serviceProviderLoginDetails.Email,
                    JobTitle      = jobDetails.Title ?? "No Title",
                };
                await EmailService.SendEmailWithSendGrid(EmailType.AcceptQuote, mail);

                return(Json(new { Success = result.IsSuccess, Msg = result.ErrorMessage }));
            }


            return(Json(new { Success = false }));
        }
示例#5
0
 public static Login GetLoginByJobQuoteId(JobAcceptedModel jobModel)
 {
     throw new NotImplementedException();
 }
示例#6
0
        public static ServiceResponseResult AcceptQuote(JobAcceptedModel model, Login login)
        {
            using (var db = new KeysEntities())
            {
                var quote = db.JobQuote.FirstOrDefault(x => x.Id == model.QuoteId);
                if (quote == null)
                {
                    return(new ServiceResponseResult {
                        IsSuccess = false, ErrorMessage = "Can note find quote"
                    });
                }
                quote.IsViewed = true;
                quote.Status   = "accepted";
                var job = new Job
                {
                    ProviderId     = quote.ProviderId,
                    PropertyId     = quote.TenantJobRequest.PropertyId,
                    AcceptedQuote  = quote.Amount,
                    JobDescription = model.JobDescription,
                    JobRequestId   = model.JobRequestId,
                    JobStatusId    = 2,
                    UpdatedBy      = login.Email,
                    CreatedOn      = DateTime.UtcNow,
                    UpdatedOn      = DateTime.UtcNow,
                    CreatedBy      = login.Email,
                    OwnerId        = login.Id
                };
                db.Job.Add(job);
                var marketJob = db.TenantJobRequest.FirstOrDefault(x => x.Id == model.JobRequestId);

                if (marketJob == null)
                {
                    return(new ServiceResponseResult {
                        IsSuccess = false, ErrorMessage = "Can not find job!"
                    });
                }
                marketJob.JobStatusId = 5;
                var otherQuotes = db.JobQuote.Where(x => x.JobRequestId == model.JobRequestId && x.Id != model.QuoteId).ToList();
                otherQuotes.ForEach(x => x.Status = "unsuccessful");
                try
                {
                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    return(new ServiceResponseResult {
                        IsSuccess = false, ErrorMessage = _error
                    });
                }
                foreach (var item in otherQuotes)
                {
                    var nvc = new NameValueCollection();
                    nvc.Add("status", "unsuccessful");


                    string             url  = UtilService.UrlGenerator(System.Web.HttpContext.Current.Request, "/Companies/Manage/MyQuotes", UtilService.ToQueryString(nvc));
                    SendGridEmailModel mail = new SendGridEmailModel
                    {
                        RecipentName  = item.ServiceProvider.Company.Name,
                        ButtonText    = "",
                        ButtonUrl     = url,
                        RecipentEmail = item.ServiceProvider.Company.CreatedBy,
                        JobTitle      = item.TenantJobRequest.JobDescription ?? "No Description",
                    };
                    EmailService.SendEmailWithSendGrid(EmailType.DeclineQuote, mail);
                }
                return(new ServiceResponseResult {
                    IsSuccess = true
                });
            }
        }