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)); } }
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)); } }
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 }); } } }
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 })); }
public static Login GetLoginByJobQuoteId(JobAcceptedModel jobModel) { throw new NotImplementedException(); }
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 }); } }