Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.80 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Http;
  6. using System.Threading.Tasks;
  7. using System.Web.Http;
  8. using customerMarket.Functions;
  9. using customerMarket.Models;
  10. using customerMarket.Database;
  11. using System.Data.Entity;
  12. using System.Text;
  13. using System.Globalization;
  14.  
  15. namespace customerMarket.Controllers
  16. {
  17.     [RoutePrefix("api/Account")]
  18.     public class AccountController : ApiController
  19.     {
  20.         DatabaseEntities db = new DatabaseEntities();
  21.  
  22.         [Route("Register")]
  23.         [System.Web.Http.HttpPost]
  24.         public async Task<IHttpActionResult> Register(UserRegisterModel model)
  25.         {
  26.             if (AuthChecker.checkAuthKey(Request.Headers.GetValues("authKey").FirstOrDefault()) == false)
  27.                 return Json(new { Message = "Access denied!" });
  28.  
  29.             if (!ModelState.IsValid)
  30.                 return Json(new { Message = ModelState });
  31.  
  32.             if (await db.users.Where(x => x.user_email.Trim() == model.User.user_email.Trim()).FirstOrDefaultAsync() == null)
  33.             {
  34.                 Database.users user = new Database.users();
  35.  
  36.                 user.user_first_name = model.User.user_first_name.Trim();
  37.                 user.user_last_name = model.User.user_last_name.Trim();
  38.                 user.user_email = model.User.user_email.Trim();
  39.                 user.user_password = model.User.user_password.Trim();
  40.                 user.user_role_id = await db.user_roles.Where(x => x.user_role_name.Contains("User")).Select(z => z.user_role_id).FirstOrDefaultAsync();
  41.                 user.user_token = Guid.NewGuid().ToString();
  42.  
  43.                 while (await db.users.Where(x => x.user_token == user.user_token).FirstOrDefaultAsync() != null)
  44.                     user.user_token = Guid.NewGuid().ToString();
  45.  
  46.                 user.user_created_date = DateTime.Now;
  47.                 db.users.Add(user);
  48.                 await db.SaveChangesAsync();
  49.  
  50.                 if (user.user_id == 0)                  
  51.                     return Json(new { Message = "Unexpected error, user not registered" });
  52.  
  53.                 Msg Message1 = new Msg("Success.");
  54.                 return Json(new { Message = Message1 });
  55.             }
  56.             Msg Message = new Msg(String.Format("The user with email '{0}' is allready exist", model.User.user_email.Trim()));
  57.             return Json(new { Message = Message });
  58.         }
  59.  
  60.         [Route("Authorize")]
  61.         [System.Web.Http.HttpPost]
  62.         public async Task<IHttpActionResult> UserAuthorize(UserAuthorizeModel model)
  63.         {
  64.             if (AuthChecker.checkAuthKey(Request.Headers.GetValues("authKey").FirstOrDefault()) == false)
  65.                 return BadRequest("Access denied!");
  66.  
  67.             if (!ModelState.IsValid)
  68.                 return BadRequest(ModelState);
  69.  
  70.             var userQuery = await db.users.Where(x => x.user_email.Trim() == model.User.user_email.Trim() && x.user_password.Trim() == model.User.user_password.Trim()).FirstOrDefaultAsync();
  71.             if (userQuery != null)
  72.             {
  73.                 List<Cart> Cart = new List<Cart>();
  74.                 foreach (Database.cart cart in db.cart.Where(x => x.user_id == userQuery.user_id))
  75.                 {
  76.                     if (await db.device_information.Where(x => x.device_id == cart.device_id).FirstOrDefaultAsync() != null)
  77.                     {
  78.                         Cart.Add(new Cart(cart.cart_id, cart.device_id));
  79.                     }
  80.                 }
  81.  
  82.                 UnreadMessageCount UnreadMessageCount = new UnreadMessageCount(await db.topic_messages_read_state.CountAsync(x => x.user_id == userQuery.user_id && x.topic_message_read_date.HasValue == false));
  83.                 UserInfo UserInfo = new UserInfo(userQuery.user_id, userQuery.user_first_name.Trim(), userQuery.user_last_name.Trim(), userQuery.user_email.Trim(), userQuery.user_token.Trim(), userQuery.user_created_date.ToString("dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture));
  84.                 return Json(new { User = UserInfo, Cart = Cart, UnreadMessageCount = UnreadMessageCount });
  85.             }
  86.             return BadRequest(String.Format("The user with email '{0}' and password: {1} is not found.", model.User.user_email.Trim(), model.User.user_password.Trim()));
  87.         }
  88.  
  89.         [Route("ChangePassword")]
  90.         [System.Web.Http.HttpPost]
  91.         public async Task<IHttpActionResult> ChangePassword(UserChangePasswordModel model)
  92.         {
  93.             if (AuthChecker.checkAuthKey(Request.Headers.GetValues("authKey").FirstOrDefault()) == false)
  94.                 return BadRequest("Access denied!");
  95.  
  96.             if (!ModelState.IsValid)
  97.                 return BadRequest(ModelState);
  98.            
  99.             if (model.User.user_password == model.User.user_newPassword)
  100.                 return BadRequest("The new password and old password shouldn't be identically.");
  101.  
  102.             var userQuery = await db.users.Where(x => x.user_id == model.User.user_id && x.user_email.Trim() == model.User.user_email.Trim() && x.user_token.Trim() == model.User.user_token.Trim()).FirstOrDefaultAsync();//await UserManager.User(model.User.user_id, model.User.user_email, model.User.user_token);
  103.             if (userQuery != null)
  104.             {
  105.                 userQuery.user_password = model.User.user_newPassword.Trim();
  106.                 await db.SaveChangesAsync();
  107.  
  108.                 if (db.users.Where(x => x.user_id == model.User.user_id && x.user_password == model.User.user_newPassword).FirstOrDefault() == null)
  109.                     return BadRequest("Password doesn't changed.");
  110.  
  111.                 Msg Message = new Msg("Success.");
  112.                 return Json(new { Message = Message });
  113.             }
  114.             return BadRequest("User not found!");
  115.         }
  116.        
  117.         [Route("RemindPassword")]
  118.         [System.Web.Http.HttpPost]
  119.         public async Task<IHttpActionResult> RemindPassword(UserRemindPasswordModel model)
  120.         {
  121.             if (AuthChecker.checkAuthKey(Request.Headers.GetValues("authKey").FirstOrDefault()) == false)
  122.                 return BadRequest("Access denied!");
  123.  
  124.             if (!ModelState.IsValid)            
  125.                 return BadRequest(ModelState);
  126.            
  127.             var userQuery = await db.users.Where(x => x.user_email.Trim() == model.User.user_email.Trim()).FirstOrDefaultAsync();
  128.             if (userQuery != null)
  129.             {
  130.                 string title = "CustomerMarket Account Recovery";
  131.                 string newPassword = RandomGenerator.generateRandomPassword(8);
  132.  
  133.                 StringBuilder msg = new StringBuilder();
  134.                 msg.AppendLine(String.Format("Hello, {0}", model.User.user_email));
  135.                 msg.AppendLine();
  136.                 msg.AppendLine(String.Format("Your new Account Password is: {0}", newPassword));
  137.                 msg.AppendLine();
  138.                 msg.AppendLine(String.Format("The CustomerMarket Support Team"));
  139.  
  140.                 if (EmailSender.sendEmail(title, msg.ToString(), model.User.user_email.Trim()) == true)
  141.                 {
  142.                     userQuery.user_password = newPassword.Trim();
  143.                     await db.SaveChangesAsync();
  144.  
  145.                     if (db.users.Where(x => x.user_email == model.User.user_email && x.user_password == newPassword).FirstOrDefault() == null)
  146.                         return BadRequest("Password doesn't changed.");
  147.  
  148.                     Msg Message = new Msg(String.Format("New password will be sent on email: {0}", model.User.user_email.Trim()));
  149.                     return Json(new { Message = Message });                  
  150.                 }
  151.                 return BadRequest("Unexpected error, password is not reseted.");
  152.             }
  153.             return BadRequest(String.Format("User with email: {0} is not found.", model.User.user_email.Trim()));
  154.         }
  155.     }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement