Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }

            //    }
            //}

        }
Example #3
0
        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);
            }
            //    }
            //}
        }