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> 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 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); } // } //} }