public ServiceProviderModel GetServiceProviderById(string serviceProviderId) { //unitOfWork.StartTransaction(); ServiceProviderRepository repo = new ServiceProviderRepository(unitOfWork); ServiceProviderModel serviceProviderModel = new ServiceProviderModel(); ServiceProvider serviceProvider = new ServiceProvider(); AutoMapper.Mapper.Map(serviceProviderModel, serviceProvider); serviceProvider = repo.GetAll().Where(x => x.ServiceProviderId == serviceProviderId).FirstOrDefault(); //unitOfWork.Commit(); AutoMapper.Mapper.Map(serviceProvider, serviceProviderModel); return serviceProviderModel; }
public ServiceProviderModel SaveServiceProvider(ServiceProviderModel model) { //unitOfWork.StartTransaction(); ServiceProviderRepository repo = new ServiceProviderRepository(unitOfWork); ServiceProvider serviceProvider = new ServiceProvider(); AutoMapper.Mapper.Map(model, serviceProvider); repo.Insert(serviceProvider); //unitOfWork.Commit(); AutoMapper.Mapper.Map(serviceProvider, model); return model; }
public ServiceProviderModel UpadteServiceProvider(ServiceProviderModel model) { //unitOfWork.StartTransaction(); ServiceProviderRepository repo = new ServiceProviderRepository(unitOfWork); ServiceProvider serviceProvider = new ServiceProvider(); serviceProvider = repo.GetAll().Where(x => x.ServiceProviderId == model.ServiceProviderId).SingleOrDefault(); AutoMapper.Mapper.Map(model, serviceProvider); //serviceProvider.IsActive = model.IsActive; repo.Update(serviceProvider); //unitOfWork.Commit(); AutoMapper.Mapper.Map(serviceProvider, model); return model; }
public IHttpActionResult GetTranscationHistoryByServiceProviderId(string Id) { //get job detail FinanceBindingModel financeBindingModel = new FinanceBindingModel(); //get deatils for service provider ServiceProviderModel serviceProviderModel = new ServiceProviderModel(); serviceProviderModel = serviceProviderService.GetServiceProviderById(Id); financeBindingModel.ServiceProviderName = serviceProviderModel.CompanyName; List<JobBindingModel> jobBindingModel = new List<JobBindingModel>(); List<JobModel> jobModel = new List<JobModel>(); jobModel = jobService.GetJobListByServiceProviderIdWithClient(Id); AutoMapper.Mapper.Map(jobModel, jobBindingModel); //get transcation history jobBindingModel.ForEach(x => { financeBindingModel.Description = x.Description; x.TransactionHistoryModel = transactionHistoryService.GetTransactionHistoryListByJobId(x.JobId); x.Email = x.TransactionHistoryModel.CustomerEmail; x.Amount = x.TransactionHistoryModel.Amount; x.PaymentType = x.TransactionHistoryModel.URFXPaymentType; x.ClientName = x.Client.FirstName +' '+ x.Client.LastName; x.TransactionDate = x.TransactionHistoryModel.CreatedDate; financeBindingModel.TotalEarnedAmount += x.TransactionHistoryModel.Amount; }); financeBindingModel.JobModel = jobBindingModel; financeBindingModel.NumberOfJobs = jobBindingModel.Count(); return Ok(financeBindingModel); }
public ResponseMessage Paging(PagingModel model) { ResponseMessage responseMessage = new ResponseMessage(); List<TransactionHistoryModel> transactionHistoryModel = new List<TransactionHistoryModel>(); transactionHistoryModel = transactionHistoryService.Paging(model); responseMessage.totalRecords = transactionHistoryModel.Count(); transactionHistoryModel = transactionHistoryModel.OrderBy(x => x.CustomerEmail).Skip((model.CurrentPageIndex - 1) * model.PageSize).Take(model.PageSize).ToList(); transactionHistoryModel.ForEach(x => { JobModel jobModel = new JobModel(); ServiceProviderModel serviceProviderModel = new ServiceProviderModel(); if (x.JobId > 0) { jobModel = jobService.GetJobById(x.JobId); } serviceProviderModel = serviceProviderService.GetServiceProviderById(jobModel.ServiceProviderId); x.ServiceProviderName = serviceProviderModel.CompanyName; }); responseMessage.data = transactionHistoryModel; return responseMessage; }
public IHttpActionResult DeleteEmployee(string id) { try { EmployeeModel employeeModel = new EmployeeModel(); if (employeeModel == null) { return NotFound(); } List<UserLocationModel> model = new List<UserLocationModel>(); model = userLocationService.FindLocationListById(id); foreach (var item in model) { userLocationService.DeleteUserLocation(item.UserLocationId); } serviceProviderEmployeeMappingService.DeleteServiceProviderEmployeeMapping(id); //delete Car Type of employee List<CarEmployeeMappingModel> carEmployeeMappingModel = new List<CarEmployeeMappingModel>(); carEmployeeMappingModel = carEmployeeMappingService.GetCarEmployeeMappingListByEmployeeId(id); carEmployeeMappingModel.ForEach(x => { carEmployeeMappingService.DeleteCarEmployeeMapping(x.CarEmployeeMappingId); }); employeeService.DeleteEmployee(id); ServiceProviderModel serviceProvider = new ServiceProviderModel(); serviceProvider = serviceProviderService.GetServiceProviderById(id); if (serviceProvider.ServiceProviderId != null) { //delete service provider service mapping List<ServiceProviderServiceMappingModel> serviceProviderMappingModel = new List<ServiceProviderServiceMappingModel>(); serviceProviderMappingModel = serviceProviderServiceMappingService.FindServiceByUserId(id); foreach (var item in serviceProviderMappingModel) { serviceProviderServiceMappingService.DeleteServiceProviderServiceMapping(item.Id); } //Delete service provider employee mapping List<ServiceProviderEmployeeMappingModel> serviceProviderEmployeeMappingModel = new List<ServiceProviderEmployeeMappingModel>(); serviceProviderEmployeeMappingModel = serviceProviderEmployeeMappingService.GetEmployeeByServiceProviderId(id); foreach (var item in serviceProviderEmployeeMappingModel) { serviceProviderEmployeeMappingService.DeleteServiceProviderEmployeeMapping(item.EmployeeId); } //Delete service provider serviceProviderService.DeleteServiceProvider(id); } ApplicationUser user = UserManager.FindById(id); IdentityResult result = UserManager.Delete(user); if (!result.Succeeded) { return GetErrorResult(result); } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } return Ok(); }
public async Task<IHttpActionResult> RegisterServiceProviderAsIndividual(EmployeeBindingModel employeeModel) { //using (var dataContext = new URFXDbContext()) //{ // TransactionScope transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); // { try { if (!ModelState.IsValid) { return BadRequest(ModelState); } var user = new ApplicationUser() { UserName = employeeModel.Email, Email = employeeModel.Email, PhoneNumber = employeeModel.PhoneNumber, DeviceType = employeeModel.DeviceType, DeviceToken = employeeModel.DeviceToken }; IdentityResult result = await UserManager.CreateAsync(user, employeeModel.Password); if (!result.Succeeded) { // transaction.Dispose(); ////UserManager.Delete(user); return GetErrorResult(result); } else { IdentityResult resultRoleCreated = await UserManager.AddToRoleAsync(user.Id, URFXRoles.ServiceProvider.ToString()); if (!resultRoleCreated.Succeeded) { // transaction.Dispose(); //UserManager.Delete(user); return GetErrorResult(resultRoleCreated); } else { try { //save service provider RegisterServiceProviderBindingModel serviceProviderBindingModel = new RegisterServiceProviderBindingModel(); ServiceProviderModel serviceProviderModel = new ServiceProviderModel(); serviceProviderBindingModel.ServiceProviderId = user.Id; serviceProviderBindingModel.StartDate = DateTime.UtcNow; serviceProviderBindingModel.CompanyName = employeeModel.FirstName + " " + employeeModel.LastName; serviceProviderBindingModel.Description = employeeModel.Description; serviceProviderBindingModel.GeneralManagerName = employeeModel.FirstName + " " + employeeModel.LastName; serviceProviderBindingModel.ServiceProviderType = ServiceProviderType.Individual; AutoMapper.Mapper.Map(serviceProviderBindingModel, serviceProviderModel); serviceProviderModel = serviceProviderService.SaveServiceProvider(serviceProviderModel); employeeModel.EmployeeId = user.Id; EmployeeModel employeeModelEntity = new EmployeeModel(); AutoMapper.Mapper.Map(employeeModel, employeeModelEntity); employeeModelEntity = employeeService.SaveEmployee(employeeModelEntity); AutoMapper.Mapper.Map(employeeModelEntity, employeeModel); //ServiceProviderEmployee Mapping ServiceProviderEmployeeMappingModel serviceProviderEmployeeMappingModel = new ServiceProviderEmployeeMappingModel(); serviceProviderEmployeeMappingModel.EmployeeId = employeeModel.EmployeeId; if (employeeModel.ServiceProviderId != null) { serviceProviderEmployeeMappingModel.ServiceProviderId = employeeModel.ServiceProviderId; } else { serviceProviderEmployeeMappingModel.ServiceProviderId = employeeModel.EmployeeId; } serviceProviderEmployeeMappingModel = serviceProviderEmployeeMappingService.SaveEmployeeAccordingToServiceProvider(serviceProviderEmployeeMappingModel); //send email var Subject = Utility.Constants.CONFIRMATION_SUBJECT; var code = UserManager.GenerateEmailConfirmationToken(user.Id); var scheme = HttpContext.Current.Request.Url.Scheme; var host = HttpContext.Current.Request.Url.Host; var port = HttpContext.Current.Request.Url.Port; string language = "en"; var cookie = HttpContext.Current.Request.Cookies.Get("APPLICATION_LANGUAGE"); if (cookie != null) language = cookie.Value; string exactPath; if (language == "en") { #if DEBUG exactPath = scheme + "://" + host + port + "/Content/URFXTheme/images/logo.png"; #else exactPath = scheme + "://" + host + "/Content/URFXTheme/images/logo.png"; #endif } else { #if DEBUG exactPath = scheme + "://" + host + port + "/Content/URFXTheme/images/arabic-logo.png"; #else exactPath = scheme + "://" + host + "/Content/URFXTheme/images/arabic-logo.png"; #endif } #if DEBUG var link = scheme + "://" + host + port + "/App/#/confirmemail/" + user.Id + ""; #else var link = scheme + "://" + host + "/#/confirmemail/" + user.Id + ""; #endif var Link = "<a href='" + link + "'>" + link + "</a>"; string text = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath(Utility.Constants.CONFIRMATION_EMAIL_PATH)); String Body = ""; Body = String.Format(text, user.UserName, Link, exactPath); try { // await service.SendAsync(message); await UserManager.SendEmailAsync(user.Id, Subject, Body); } catch (Exception ex) { // transaction.Dispose(); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } //transaction.Complete(); } catch (Exception ex) { // transaction.Dispose(); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } } } return Json(employeeModel); // return Ok("{\"response\":" + Json(employeeModel) + "}"); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } // } //} }
public IHttpActionResult RejectJob(string userId, int jobId, string comment) { JobBindingModel jobBindingModel = new JobBindingModel(); try { //Get job by jobId JobModel jobModel = new JobModel(); AutoMapper.Mapper.Map(jobBindingModel, jobModel); jobModel = jobService.GetJobById(jobId); jobModel.Status = JobStatus.Rejected; jobModel.Comment = comment; //Check for individual ServiceProviderModel serviceProviderModel = new ServiceProviderModel(); serviceProviderModel = serviceProviderService.GetServiceProviderById(userId); if (serviceProviderModel.ServiceProviderType == ServiceProviderType.Individual) { jobModel.EmployeeId = null; } jobModel = jobService.UpadteJob(jobModel); AutoMapper.Mapper.Map(jobModel, jobBindingModel); //remove job from schedule table EmployeeScheduleModel employeeScheduleModel = new EmployeeScheduleModel(); employeeScheduleModel = employeeScheduleService.GetEmployeesScheduleByJobId(jobId); employeeScheduleService.DeleteEmployeeSchedule(employeeScheduleModel.Id); //Get client for job ApplicationUser user = UserManager.FindById(jobModel.ClientId); if (user != null) { if (user.DeviceType == Utility.Constants.DEVICE_TYPE_ANDROID) { string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.userId=" + userId + "&data.jobId=" + jobId + "&data.type=" + Utility.Constants.JOB_REJECT_TYPE + "&data.message=" + Utility.Constants.MESSAGE_FOR_JOB_REJECT + "&data.time=" + System.DateTime.Now.ToString() + "®istration_id=" + user.DeviceToken + ""; var response = sendNotificationService.SendNotificationForAndroid(postData); } else if (user.DeviceType == Utility.Constants.DEVICE_TYPE_IOS) { string payload = "{\"aps\":{\"alert\":\"" + "Hi, " + Utility.Constants.MESSAGE_FOR_JOB_REJECT + "" + "\",\"badge\":1,\"sound\":\"default\"},\"JobId\":" + jobId + ",\"userId\":\"" + userId + "\",\"type\":\"" + Utility.Constants.JOB_REJECT_TYPE + "\"}"; sendNotificationService.SendNotificationForIOS(user.DeviceToken, payload); } } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } return Json(jobBindingModel); }
public async Task<IHttpActionResult> PutEmployee() { try { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var root = HttpContext.Current.Server.MapPath(Utility.Constants.BASE_FILE_UPLOAD_PATH); Directory.CreateDirectory(root); var provider = new MultipartFormDataStreamProvider(root); var resultModel = await Request.Content.ReadAsMultipartAsync(provider); if (resultModel.FormData["model"] == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var model = resultModel.FormData["model"]; EmployeeBindingModel employeeBindingModel = new EmployeeBindingModel(); employeeBindingModel = JsonConvert.DeserializeObject<EmployeeBindingModel>(model); if (!ModelState.IsValid) { return BadRequest(ModelState); } else { EmployeeModel employeeModelForCheckRecord = new EmployeeModel(); employeeModelForCheckRecord = employeeService.GetEmployeeById(employeeBindingModel.EmployeeId); if (resultModel.FileData.Count > 0) { string fileName; if (HttpContext.Current.Request.Files != null) { for (var i = 0; i < resultModel.FileData.Count; i++) { var file = HttpContext.Current.Request.Files[i]; fileName = file.FileName; if (i == 0) { file.SaveAs(Path.Combine(root, Utility.Constants.EMPLOYEE_PROFILE_PATH, fileName)); employeeBindingModel.ProfileImage = fileName; } else { file.SaveAs(Path.Combine(root, Utility.Constants.NATIONAL_ID_PATH, fileName)); employeeBindingModel.NationalIdAndIqamaNumber = fileName; } } } } if (employeeBindingModel.ProfileImage == null) { employeeBindingModel.ProfileImage = employeeModelForCheckRecord.ProfileImage; } if (employeeBindingModel.NationalIdAndIqamaNumber == null) { employeeBindingModel.NationalIdAndIqamaNumber = employeeModelForCheckRecord.NationalIdAndIqamaNumber; } //if (employeeBindingModel.IqamaNumber == null) //{ // employeeBindingModel.IqamaNumber = employeeModelForCheckRecord.IqamaNumber; //} try { //Update employee EmployeeModel employeeModelEntity = new EmployeeModel(); AutoMapper.Mapper.Map(employeeBindingModel, employeeModelEntity); employeeModelEntity = employeeService.UpadteEmployee(employeeModelEntity); AutoMapper.Mapper.Map(employeeModelEntity, employeeBindingModel); //Add Car type for Employee if (employeeBindingModel.CarTypeId != 0) { CarEmployeeMappingModel carEmployeeMappingModel = new CarEmployeeMappingModel(); carEmployeeMappingModel.CarTypeId = employeeBindingModel.CarTypeId; carEmployeeMappingModel.EmployeeId = employeeBindingModel.EmployeeId; CarEmployeeMappingModel carEmployeeMappingModelCheck = new CarEmployeeMappingModel(); carEmployeeMappingModelCheck = carEmployeeMappingService.GetCarEmployeeMappingByEmployeeId(carEmployeeMappingModel.EmployeeId); carEmployeeMappingModelCheck.CarTypeId = employeeBindingModel.CarTypeId; carEmployeeMappingModelCheck.EmployeeId = employeeBindingModel.EmployeeId; if (carEmployeeMappingModelCheck.CarEmployeeMappingId == 0) { carEmployeeMappingModel = carEmployeeMappingService.SaveCarEmployeeMapping(carEmployeeMappingModelCheck); } else { carEmployeeMappingModel = carEmployeeMappingService.UpadteCarEmployeeMapping(carEmployeeMappingModelCheck); } } //save location for employee var location = resultModel.FormData["LocationModel"]; UserLocationModel locationModel = new UserLocationModel(); UserLocationModel userlocationModel = new UserLocationModel(); locationModel = JsonConvert.DeserializeObject<UserLocationModel>(location); locationModel.UserId = employeeBindingModel.EmployeeId; locationModel.DistrictId = 1; bool Exists; Exists = userLocationService.CheckExistance(locationModel.UserId); if (!Exists && locationModel.CityId != 0) { userLocationService.InsertUserLocation(locationModel); } else if (Exists) { userlocationModel = userLocationService.FindLocationById(locationModel.UserId); locationModel.UserLocationId = userlocationModel.UserLocationId; userLocationService.UpadteUserLocation(locationModel); } //check service provider as individual and update service provider IndividualBindingModel individualBindingModel = new IndividualBindingModel(); RegisterServiceProviderBindingModel serviceProviderBindingModel = new RegisterServiceProviderBindingModel(); ServiceProviderModel serviceProvider = new ServiceProviderModel(); serviceProvider = serviceProviderService.GetServiceProviderById(employeeBindingModel.EmployeeId); if (serviceProvider != null && serviceProvider.ServiceProviderType == ServiceProviderType.Individual) { serviceProvider.CompanyLogoPath = employeeBindingModel.ProfileImage; serviceProvider.RegistrationCertificatePath = employeeBindingModel.NationalIdAndIqamaNumber; serviceProvider.Description = employeeBindingModel.Description; serviceProvider = serviceProviderService.UpadteServiceProvider(serviceProvider); } var user = await UserManager.FindByIdAsync(employeeBindingModel.EmployeeId); if (user != null) { if (user.Email != employeeBindingModel.Email || user.PhoneNumber != employeeBindingModel.PhoneNumber) { user.Email = employeeBindingModel.Email; user.PhoneNumber = employeeBindingModel.PhoneNumber; IdentityResult result = await UserManager.UpdateAsync(user); } } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } } return Ok(); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } }
public async Task<IHttpActionResult> CreateJob() { //using (var dataContext = new URFXDbContext()) //{ // TransactionScope transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); // { TaskModel taskModel = new TaskModel(); JobModel jobModel = new JobModel(); try { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var root = HttpContext.Current.Server.MapPath(Utility.Constants.BASE_FILE_UPLOAD_PATH); Directory.CreateDirectory(root); var provider = new MultipartFormDataStreamProvider(root); var resultModel = await Request.Content.ReadAsMultipartAsync(provider); if (resultModel.FormData["model"] == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var result = resultModel.FormData["model"]; var model = result.Substring(1, result.Length - 2); List<JobBindingModel> JobBindingModelList = new List<JobBindingModel>(); taskModel = JsonConvert.DeserializeObject<TaskModel>(model); List<JobModel> jobModelList = new List<JobModel>(); AutoMapper.Mapper.Map(JobBindingModelList, jobModelList); string fileName; if (taskModel.StartDate >= DateTime.UtcNow) { //Check for individual ServiceProviderModel serviceProviderModel = new ServiceProviderModel(); serviceProviderModel = serviceProviderService.GetServiceProviderById(taskModel.ServiceProviderId); if (serviceProviderModel.ServiceProviderType == ServiceProviderType.Individual) { jobModel.EmployeeId = taskModel.ServiceProviderId; } try { //set status and details of job jobModel.Status = JobStatus.New; //jobModel.CreatedDate = DateTime.UtcNow; jobModel.StartDate = taskModel.StartDate; jobModel.EndDate = taskModel.EndDate; jobModel.Description = taskModel.Description; jobModel.ServiceProviderId = taskModel.ServiceProviderId; jobModel.ClientId = taskModel.ClientId; jobModel.Quantity = taskModel.Quantity; jobModel.Comments = taskModel.Comments; jobModel.JobAddress = taskModel.JobAddress; jobModel.Latitude = taskModel.Latitude; jobModel.Longitude = taskModel.Longitude; jobModel.Cost = taskModel.Cost; //save job jobModel = jobService.SaveJob(jobModel); //Get transcation history for job //TransactionHistoryModel historyModel = new TransactionHistoryModel(); //historyModel = transactionHistoryService.FindTransactionHistoryByMerchantRegrence(taskModel.MerchantReference); //historyModel.JobId = jobModel.JobId; //transactionHistoryService.UpdateTransactionHistory(historyModel); //Job service Mapping JobServiceMappingModel jobServiceMappingModel = new JobServiceMappingModel(); JobServicePictureMappingModel jobServicePictureMappingModel = new JobServicePictureMappingModel(); taskModel.SubTaskList.ForEach(x => { jobServiceMappingModel.Quantity = x.Quantity; jobServiceMappingModel.JobId = jobModel.JobId; jobServiceMappingModel.Comments = x.Comments; jobServiceMappingModel.ServiceId = x.ServiceId; jobServiceMappingModel.Description = x.Description; jobServiceMappingModel = jobServiceMappingService.SaveJobServiceMapping(jobServiceMappingModel); jobServicePictureMappingModel.JobServiceMappingId = jobServiceMappingModel.JobServiceMappingId; if (HttpContext.Current.Request.Files != null) { for (var i = 0; i < HttpContext.Current.Request.Files.Count; i++) { var file = HttpContext.Current.Request.Files[i]; fileName = file.FileName; var splittedFileName = fileName.Split('$'); if (splittedFileName[0] == x.Description) { file.SaveAs(Path.Combine(root, Utility.Constants.JOB_SERVICE_IMAGES_PATH, splittedFileName[1])); jobServicePictureMappingModel.ImagePath = splittedFileName[1]; jobServicePictureMappingModel = jobServicePictruesMappingService.SaveJobServicePictureMapping(jobServicePictureMappingModel); } } } }); // transaction.Complete(); } catch (Exception ex) { // transaction.Dispose(); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } } else { return BadRequest("Job date is not valid"); } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } // } //} return Ok(jobModel); }
public IHttpActionResult GetComplaintByServiceProviderId(string serviceProviderId) { List<ComplaintBindingModel> complaintBindingModel = new List<ComplaintBindingModel>(); List<ComplaintModel> complaintModel = new List<ComplaintModel>(); // AutoMapper.Mapper.Map(jobBindingModel, jobModel); complaintModel = complaintService.GetComplaintListByServiceProviderId(serviceProviderId); AutoMapper.Mapper.Map(complaintModel, complaintBindingModel); EmployeeModel employeeModel = new EmployeeModel(); ClientModel clientModel = new ClientModel(); ServiceProviderModel ServiceProviderModel = new ServiceProviderModel(); JobModel jobModel = new JobModel(); complaintBindingModel.ForEach(x => { jobModel = jobService.GetJobById(x.JobId); employeeModel = employeeService.GetEmployeeById(x.EmployeeId); x.EmployeeName = employeeModel.FirstName; clientModel = clientService.GetClientById(x.ClientId); x.ClientName = clientModel.FirstName; ServiceProviderModel = serviceProviderService.GetServiceProviderById(x.ServiceProviderId); x.ServiceProviderName = ServiceProviderModel.CompanyName; x.JobAddress = jobModel.JobAddress; x.JobDescription = jobModel.Description; x.Description = x.Description; ApplicationUser user = UserManager.FindById(x.ClientId); if (user != null) { x.ClientPhoneNumber = user.PhoneNumber; } }); return Ok(complaintBindingModel); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var id = User.Identity.GetUserId(); var role = UserManager.GetRoles(id); // UserManager.FindByIdAsync(id); ClientModel clientDetail = new ClientModel(); ServiceProviderModel serviceProviderModel = new ServiceProviderModel(); if (role[0].ToString() == URFXRoles.Client.ToString()) { clientDetail = clientService.GetClientById(id); } else { serviceProviderModel = serviceProviderService.GetServiceProviderById(id); } return new UserInfoViewModel { Email = UserManager.FindByName(User.Identity.GetUserName()).Email, HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, UserName = User.Identity.GetUserName(), Client = clientDetail, ServiceProvider = serviceProviderModel }; }
public async Task<IHttpActionResult> RegisterServiceProvider() { //using (var dataContext = new URFXDbContext()) //{ // TransactionScope transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); // { try { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var root = HttpContext.Current.Server.MapPath(Utility.Constants.BASE_FILE_UPLOAD_PATH); Directory.CreateDirectory(root); var provider = new MultipartFormDataStreamProvider(root); var resultModel = await Request.Content.ReadAsMultipartAsync(provider); if (resultModel.FormData["model"] == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var plan = resultModel.FormData["planModel"]; PlanServiceProviderModel planModel = new PlanServiceProviderModel(); planModel = JsonConvert.DeserializeObject<PlanServiceProviderModel>(plan); var location = resultModel.FormData["LocationModel"]; UserLocationModel locationModel = new UserLocationModel(); locationModel = JsonConvert.DeserializeObject<UserLocationModel>(location); //var services = resultModel.FormData["services"]; //string[] serviceIds = { string.Empty }; //List<string> serviceIdList = new List<string>(); //if (!string.IsNullOrEmpty(services)) //{ // //serviceIds = services.Substring(1, services.Length - 1).Split(','); // serviceIdList = new List<string>(services.Substring(1, services.Length - 2).Split(',')); // //serviceIdList.AddRange(serviceIds); //} var model = resultModel.FormData["model"]; RegisterServiceProviderBindingModel serviceProviderModel = new RegisterServiceProviderBindingModel(); serviceProviderModel = JsonConvert.DeserializeObject<RegisterServiceProviderBindingModel>(model); if (!ModelState.IsValid) { return BadRequest(ModelState); } var user = new ApplicationUser() { UserName = serviceProviderModel.Email, Email = serviceProviderModel.Email, PhoneNumber = serviceProviderModel.PhoneNumber }; IdentityResult result = await UserManager.CreateAsync(user, serviceProviderModel.Password); if (!result.Succeeded) { // transaction.Dispose(); //UserManager.Delete(user); return BadRequest("{\"status\" : false, \"message\" : \"Email id is already used\"}"); } else { serviceProviderModel.ServiceProviderId = user.Id; serviceProviderModel.StartDate = DateTime.UtcNow; IdentityResult resultRoleCreated = await UserManager.AddToRoleAsync(user.Id, URFXRoles.ServiceProvider.ToString()); if (!resultRoleCreated.Succeeded) { // transaction.Dispose(); //UserManager.Delete(user); return GetErrorResult(resultRoleCreated); } else { try { if (resultModel.FileData.Count > 0) { string fileName; if (HttpContext.Current.Request.Files != null) { for (var i = 0; i < resultModel.FileData.Count; i++) { var file = HttpContext.Current.Request.Files[i]; fileName = file.FileName; //// Load image. //Image image = Image.FromStream(file.InputStream); //// Compute thumbnail size. //Size thumbnailSize = GetThumbnailSize(image); if (i == 0) { file.SaveAs(Path.Combine(root, Utility.Constants.REGISTRATION_CERTIFICATE_PATH, fileName)); serviceProviderModel.RegistrationCertificatePath = fileName; //var thumbnails= Guid.NewGuid() + ".jpg"; // Get thumbnail. //Image thumbnail = image.GetThumbnailImage(thumbnailSize.Width, // thumbnailSize.Height, null, IntPtr.Zero); //thumbnail.Save(Path.Combine(root, Utility.Constants.THUMBNAILSIMAGES, thumbnails)); } else { file.SaveAs(Path.Combine(root, Utility.Constants.GOSI_CERTIFICATE_PATH, fileName)); serviceProviderModel.GosiCertificatePath = fileName; //var thumbnails = Guid.NewGuid() + ".jpg"; // Get thumbnail. //Image thumbnail = image.GetThumbnailImage(thumbnailSize.Width, // thumbnailSize.Height, null, IntPtr.Zero); //thumbnail.Save(Path.Combine(root, Utility.Constants.THUMBNAILSIMAGES, thumbnails)); } } } } if (locationModel.CityId != 0) { locationModel.UserId = user.Id; locationModel.DistrictId = 1; userLocationService.InsertUserLocation(locationModel); } ServiceProviderModel serviceProviderModelEntity = new ServiceProviderModel(); AutoMapper.Mapper.Map(serviceProviderModel, serviceProviderModelEntity); serviceProviderModelEntity = serviceProviderService.SaveServiceProvider(serviceProviderModelEntity); AutoMapper.Mapper.Map(serviceProviderModelEntity, serviceProviderModel); var Subject = Utility.Constants.CONFIRMATION_SUBJECT; var code = UserManager.GenerateEmailConfirmationToken(user.Id); var scheme = HttpContext.Current.Request.Url.Scheme; var host = HttpContext.Current.Request.Url.Host; var port = HttpContext.Current.Request.Url.Port > 0 ? ":" + HttpContext.Current.Request.Url.Port : ""; string language = "en"; var cookie = HttpContext.Current.Request.Cookies.Get("APPLICATION_LANGUAGE"); if (cookie != null) language = cookie.Value; string exactPath; if (language == "en") { #if DEBUG exactPath = scheme + "://" + host + port + "/Content/URFXTheme/images/logo.png"; #else exactPath = scheme + "://" + host + "/Content/URFXTheme/images/logo.png"; #endif } else { #if DEBUG exactPath = scheme + "://" + host + port + "/Content/URFXTheme/images/arabic-logo.png"; #else exactPath = scheme + "://" + host + "/Content/URFXTheme/images/arabic-logo.png"; #endif } //var exactPath = scheme + "://" + host + "/Content/URFXTheme/images/logo.png"; #if DEBUG var link = scheme + "://" + host + port + "/App/#/confirmemail/" + user.Id + ""; #else var link = scheme + "://" + host + "/App/#/confirmemail/" + user.Id + ""; #endif var Link = "<a href='" + link + "'>" + link + "</a>"; string text = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath(Utility.Constants.CONFIRMATION_EMAIL_PATH)); String Body = ""; Body = String.Format(text, user.UserName, Link, exactPath); try { // await service.SendAsync(message); await UserManager.SendEmailAsync(user.Id, Subject, Body); } catch (Exception ex) { // transaction.Dispose(); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } // transaction.Complete(); } catch (Exception ex) { // transaction.Dispose(); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } } } return Ok(); } catch (Exception ex) { // transaction.Dispose(); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } // } //} }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>(); try { ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password); if (user != null) { var roles = await userManager.GetRolesAsync(user.Id); // Get all roles of user from server var role = roles.FirstOrDefault(); // Get user role var IsEmployee = HttpContext.Current.Request.Headers["IsEmployee"]; var IsClient = HttpContext.Current.Request.Headers["IsClient"]; if (IsEmployee == null && role == URFXRoles.Employee.ToString()) { context.SetError("invalid_grant", "You are not authorised to login.Please contact at [email protected]"); return; } if (IsClient == null && role == URFXRoles.Client.ToString()) { context.SetError("invalid_grant", "You are not authorised to login.Please contact at [email protected]"); return; } if (role != null && role != URFXRoles.Employee.ToString()) { if (user.RegistrationType == RegistrationType.Simple) { if (!user.EmailConfirmed) { context.SetError("invalid_grant", "Please confirm your email first."); return; } } } if (role != URFXRoles.Client.ToString()) { var deviceType = HttpContext.Current.Request.Headers["deviceType"]; var deviceToken = HttpContext.Current.Request.Headers["deviceToken"]; user.DeviceToken = deviceToken; user.DeviceType = deviceType; } IdentityResult result = await UserManager.UpdateAsync(user); ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager, OAuthDefaults.AuthenticationType); ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager, CookieAuthenticationDefaults.AuthenticationType); UserPlanModel userPlanModel = new UserPlanModel(); ServiceProviderModel serviceproviderModel = new ServiceProviderModel(); userPlanModel = userPlanService.GetUserPlanByUserId(user.Id); if (role == URFXRoles.ServiceProvider.ToString()) { serviceproviderModel = serviceProviderService.GetServiceProviderById(user.Id); } AuthenticationProperties properties = null; if (user.DeviceType != null && user.DeviceToken != null) { properties = CreateProperties(user.UserName, role, user.Id, user.DeviceType, user.DeviceToken, userPlanModel.PlanId, user.IsRegister, user.IsLogin, serviceproviderModel.ServiceProviderType); } else { properties = CreateProperties(user.UserName, role, user.Id, userPlanModel.PlanId, user.IsRegister, user.IsLogin, serviceproviderModel.ServiceProviderType); } AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties); context.Validated(ticket); context.Request.Context.Authentication.SignIn(cookiesIdentity); } else { context.SetError("invalid_grant", "The user name or password is incorrect."); return; } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } }