Пример #1
0
        public async Task <Result <PanelUserDTO> > AddUserAsync(PanelUserDTO model)
        {
            try
            {
                Result <PanelUserDTO>    res  = new Result <PanelUserDTO>();
                EFRepository <PanelUser> repo = _unitOfWork.EntityRepository <PanelUser>();
                if (await repo.GetExistsAsync((PanelUser w) => w.IsDeleted == false && w.Email == model.Email))
                {
                    return(res.Fail("Bu mail (" + model.Email + ") ile kullanıcı tanımlanmış!"));
                }
                PanelUser panelUser = Mapper.Map <PanelUserDTO, PanelUser>(model);
                string    pass      = PasswordHelper.GeneratePassword(6);
                panelUser.Password    = PasswordHelper.MD5Hash(pass);
                panelUser.CreatedDate = DateTime.UtcNow;
                panelUser.Place       = null;
                panelUser.Company     = null;
                PanelUser created = await repo.CreateAsync(panelUser);

                await _unitOfWork.SaveChangesAsync();

                if (model.SendMail)
                {
                    await _emailSender.Send(new string[1]
                    {
                        model.Email
                    }, "Üyeliğiniz oluşturuldu!", "Yetkilim panele giriş şifreniz: " + pass);
                }

                return(Result.Data(Mapper.Map <PanelUser, PanelUserDTO>(created)));
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Пример #2
0
        public async Task <Result> UpdateUserAsync(int id, PanelUserDTO user)
        {
            EFRepository <PanelUser> repo = _unitOfWork.EntityRepository <PanelUser>();
            PanelUser item = await repo.GetFirstAsync((PanelUser w) => w.IsDeleted == false && w.Id == id, null);

            if (item == null)
            {
                return(Result.Fail("Kullanıcı bulunamadı!"));
            }
            item.Name         = user.Name;
            item.PlaceId      = user.PlaceId;
            item.Role         = user.Role;
            item.ModifiedDate = DateTime.UtcNow;
            if (item.Email != user.Email)
            {
                if (await repo.GetExistsAsync((PanelUser w) => w.IsDeleted == false && w.Email == user.Email))
                {
                    return(Result.Fail("Bu mail (" + user.Email + ") ile kullanıcı tanımlanmış!"));
                }
                item.Email = user.Email;
                string text = PasswordHelper.GeneratePassword(6);
                item.Password = PasswordHelper.MD5Hash(text);
                await _emailSender.Send(new string[1]
                {
                    user.Email
                }, "Üyeliğiniz oluşturuldu!", "Yetkilim panele giriş şifreniz: " + text);
            }
            await _unitOfWork.SaveChangesAsync();

            return(Result.Success());
        }
Пример #3
0
        public async Task <IActionResult> Create(CompanyFormModel model)
        {
            if (this.ModelState.IsValid)
            {
                try
                {
                    if (string.IsNullOrWhiteSpace(model.ManagerName) || string.IsNullOrWhiteSpace(model.ManagerEmail))
                    {
                        model.IsSuccess   = false;
                        model.FormMessage = "Firma yetkilisi bilgileri girilmelidir.";
                        return(this.View((object)model));
                    }
                    IFormFile logoFile       = model.LogoFile;
                    string    uniqueFileName = null;
                    if (logoFile != null && logoFile.Length > 0)
                    {
                        uniqueFileName = FileHelper.GetUniqueFileName(logoFile.FileName);
                        if (string.IsNullOrWhiteSpace(_hostingEnvironment.WebRootPath))
                        {
                            _hostingEnvironment.WebRootPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
                        }
                        string path  = Path.Combine(_hostingEnvironment.WebRootPath, "admin/uploads");
                        string path2 = Path.Combine(path, uniqueFileName);
                        using (FileStream stream = new FileStream(path2, FileMode.Create))
                        {
                            await logoFile.CopyToAsync((Stream)stream, default(CancellationToken));
                        }
                    }
                    CompanyDetailDTO companyDetailDTO = Mapper.Map <CompanyFormModel, CompanyDetailDTO>(model);
                    companyDetailDTO.Image = uniqueFileName;
                    PanelUserDTO manager = new PanelUserDTO
                    {
                        Email   = model.ManagerEmail,
                        Name    = model.ManagerName,
                        Surname = model.ManagerSurname
                    };
                    Result <CompanyDetailDTO> result = await _companyService.AddCompanyAsync(companyDetailDTO, manager);

                    model.FormMessage = result.FormMessage;
                    model.IsSuccess   = result.IsSuccess;
                    if (model.IsSuccess)
                    {
                        model.FormMessage = "İşleminiz başarılı bir şekilde gerçekleştirildi.";
                    }
                    return(this.View((object)model));
                }
                catch (Exception ex)
                {
                    LoggerExtensions.LogError(_logger, ex, "Create Error", Array.Empty <object>());
                    model.IsSuccess   = false;
                    model.FormMessage = "İşleminiz gerçekleştirilemedi.";
                    return(this.View((object)model));
                }
            }
            return(this.View((object)model));
        }
Пример #4
0
        public async Task <Result <PanelUserDTO> > GetUserAsync(string email, string password)
        {
            Result <PanelUserDTO> res = new Result <PanelUserDTO>();
            string    hashedPassword  = PasswordHelper.MD5Hash(password);
            PanelUser panelUser       = await EntityFrameworkQueryableExtensions.FirstOrDefaultAsync <PanelUser>((IQueryable <PanelUser>) EntityFrameworkQueryableExtensions.Include <PanelUser, Company>(_unitOfWork.EntityRepository <PanelUser>().GetQueryable((PanelUser w) => w.IsDeleted == false && w.Email == email && w.Password == hashedPassword && !w.IsDeleted, null), (Expression <Func <PanelUser, Company> >)((PanelUser w) => w.Company)), default(CancellationToken));

            if (panelUser == null)
            {
                return(res.Fail("User yok!"));
            }
            PanelUserDTO dataVal = Mapper.Map <PanelUser, PanelUserDTO>(panelUser);

            return(res.Success(dataVal));
        }
Пример #5
0
        public async Task <IActionResult> Login(AdminLoginViewModel model)
        {
            if (this.ModelState.IsValid)
            {
                try
                {
                    Result <PanelUserDTO> result = await _panelUserService.GetUserAsync(model.Email, model.Password);

                    if (!result.IsSuccess)
                    {
                        model.FormMessage = "E-Posta ya da Şifre bilgisi yanlış, lütfen bilgilerinizi kontrol edin.";
                        return(this.View((object)model));
                    }
                    PanelUserDTO data   = result.Data;
                    List <Claim> claims = new List <Claim>
                    {
                        new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", data.Id.ToString()),
                        new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", data.Name),
                        new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", data.Email),
                        new Claim("CompanyId", data.CompanyId.ToString()),
                        new Claim("PlaceId", data.PlaceId.ToString()),
                        new Claim("CompanyName", data.Company.Name),
                        new Claim("http://schemas.microsoft.com/ws/2008/06/identity/claims/role", data.Role.ToString())
                    };
                    ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(claims, "ClaimIdentity"));
                    var             task            = AuthenticationHttpContextExtensions.SignInAsync(this.HttpContext, "AdminAreaCookies", claimsPrincipal);
                    task.Wait();
                    if (task.IsCompletedSuccessfully)
                    {
                        var temp = this.User.Claims;
                    }
                    else
                    {
                    }
                    return(this.RedirectToAction("Index", "Manage"));
                }
                catch (Exception ex)
                {
                    LoggerExtensions.LogError(_logger, ex, "Panel Login Error", Array.Empty <object>());
                    model.FormMessage = "İşleminiz gerçekleştirilemedi.";
                    return(this.View((object)model));
                }
            }
            return(this.View((object)model));
        }
Пример #6
0
        public async Task <ViewResult> Update(int id, PanelUserFormModel model)
        {
            model.UserId = id;
            FillPanelUserFormModel(model);
            if (this.ModelState.IsValid)
            {
                try
                {
                    PanelUserDTO panelUserDTO = Mapper.Map <PanelUserFormModel, PanelUserDTO>(model);
                    if (model.Role == UserRole.Dealer && base.CurrentUser.Role == UserRole.SuperAdmin)
                    {
                        Place place = _placeService.GetPlaceQueryable().FirstOrDefault((Place w) => (object)(int?)w.Id == (object)model.PlaceId);
                        if (place != null)
                        {
                            panelUserDTO.CompanyId = place.CompanyId;
                        }
                    }
                    Result result = await _panelUserService.UpdateUserAsync(id, panelUserDTO);

                    model.FormMessage = result.FormMessage;
                    model.IsSuccess   = result.IsSuccess;
                    if (model.IsSuccess)
                    {
                        model.FormMessage = "İşleminiz başarılı bir şekilde gerçekleştirildi.";
                    }
                    return(this.View((object)model));
                }
                catch (Exception ex)
                {
                    LoggerExtensions.LogError(_logger, ex, "POST Update Error {0}", new object[1]
                    {
                        id
                    });
                    model.FormMessage = "İşleminiz gerçekleştirilemedi.";
                    return(this.View((object)model));
                }
            }
            return(this.View((object)model));
        }
Пример #7
0
        public async Task <IActionResult> Create(PanelUserFormModel model)
        {
            try
            {
                FillPanelUserFormModel(model);
                if (!this.ModelState.IsValid)
                {
                    return(this.View((object)model));
                }

                if (string.IsNullOrWhiteSpace(model.Email))
                {
                    model.IsSuccess   = false;
                    model.FormMessage = "E-posta adresi gerekmektedir";
                    return(this.View((object)model));
                }

                if (string.IsNullOrWhiteSpace(model.Name))
                {
                    model.IsSuccess   = false;
                    model.FormMessage = "Ad Soyad gerekmektedir";
                    return(this.View((object)model));
                }

                if (model.Role == UserRole.Dealer && !model.PlaceId.HasValue)
                {
                    model.IsSuccess   = false;
                    model.FormMessage = "Şube yetkilisi eklemek için mekan seçmeniz gerekmektedir.";
                    return(this.View((object)model));
                }

                if (model.Role == UserRole.Admin && !model.CompanyId.HasValue)
                {
                    model.IsSuccess   = false;
                    model.FormMessage = "Firma yetkilisi eklemek için mekan seçmeniz gerekmektedir.";
                    return(this.View((object)model));
                }

                var companyId = 0;

                PanelUserDTO panelUserDTO = new PanelUserDTO
                {
                    Name        = model.Name,
                    Email       = model.Email,
                    Role        = model.Role,
                    CreatedDate = DateTime.UtcNow,
                    CompanyId   = companyId = base.CurrentUser.CompanyId,
                    PlaceId     = model.PlaceId
                };
                var misafirIsletmemi = false;
                if (model.Role == UserRole.Dealer)
                {
                    Place place = _placeService.GetPlaceQueryable().FirstOrDefault((Place w) => (object)(int?)w.Id == (object)model.PlaceId);
                    if (place != null)
                    {
                        panelUserDTO.CompanyId = place.CompanyId;
                        misafirIsletmemi       = string.Equals(place.Guest, "Evet", StringComparison.InvariantCultureIgnoreCase);
                    }
                }

                if (model.Role == UserRole.Admin)
                {
                    panelUserDTO.CompanyId = model.CompanyId.Value;
                    var company = _companyService.GetCompanyQueryable().AsNoTracking().First(x => x.Id == model.CompanyId);
                    misafirIsletmemi = string.Equals(company.Demo, "Evet", StringComparison.InvariantCultureIgnoreCase);
                }
                panelUserDTO.SendMail = !misafirIsletmemi;
                Result <PanelUserDTO> result = await _panelUserService.AddUserAsync(panelUserDTO);

                model.FormMessage = result.FormMessage;
                model.IsSuccess   = result.IsSuccess;
                if (model.IsSuccess)
                {
                    model.FormMessage = "İşleminiz başarılı bir şekilde gerçekleştirildi.";
                }
                return(this.View((object)model));
            }
            catch (Exception ex)
            {
                LoggerExtensions.LogError(_logger, ex, "Create Error", Array.Empty <object>());
                model.IsSuccess   = false;
                model.FormMessage = "İşleminiz gerçekleştirilemedi.";
                return(this.View((object)model));
            }
        }
Пример #8
0
        public async Task <Result <CompanyDetailDTO> > AddCompanyAsync(CompanyDetailDTO company, PanelUserDTO manager)
        {
            Result <CompanyDetailDTO> res = new Result <CompanyDetailDTO>();

            _unitOfWork.BeginTransaction(IsolationLevel.ReadCommitted);
            try
            {
                Company entity  = Mapper.Map <CompanyDetailDTO, Company>(company);
                Company created = await _unitOfWork.EntityRepository <Company>().CreateAsync(entity);

                await _unitOfWork.SaveChangesAsync();

                manager.CompanyId = created.Id;
                manager.Role      = UserRole.Admin;
                if (!string.Equals(company.Demo, "Evet", StringComparison.InvariantCultureIgnoreCase))
                {
                    Result <PanelUserDTO> result = await _panelUserService.AddUserAsync(manager);

                    if (!result.IsSuccess)
                    {
                        _unitOfWork.Rollback();
                        return(res.Fail(result.Messages));
                    }
                }
                _unitOfWork.Commit();
                return(Result.Data(Mapper.Map <Company, CompanyDetailDTO>(created)));
            }
            catch (Exception)
            {
                _unitOfWork.Rollback();
                throw;
            }
        }