You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UserDetails.js 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. import React from "react";
  2. import PropTypes from "prop-types";
  3. import avatar from "../../assets/images/Avatar.png";
  4. import filters from "../../assets/images/filters.png";
  5. import lock from "../../assets/images/lock.png";
  6. import forbiden from "../../assets/images/forbiden.png";
  7. import IconButton from "../../components/IconButton/IconButton";
  8. import { Link, useParams } from "react-router-dom";
  9. import { deleteUserReq } from "../../store/actions/users/usersActions";
  10. import { useDispatch } from "react-redux";
  11. import { USERS_PAGE } from "../../constants/pages";
  12. import { forgetPassword } from "../../store/actions/login/loginActions";
  13. const UserDetails = ({ history }) => {
  14. const { id } = useParams();
  15. const dispatch = useDispatch();
  16. const handleReset = (email) => {
  17. dispatch(
  18. forgetPassword({
  19. email,
  20. handleApiResponseSuccessReset,
  21. })
  22. );
  23. };
  24. const handleApiResponseSuccessReset = () => {
  25. alert("Ok");
  26. };
  27. const handleApiResponseSuccess = () => {
  28. history.push({
  29. pathname: USERS_PAGE,
  30. state: {
  31. from: history.location.pathname,
  32. },
  33. });
  34. };
  35. const deleteHandler = () => {
  36. dispatch(deleteUserReq({ id, handleApiResponseSuccess }));
  37. };
  38. return (
  39. <div>
  40. <div className="l-t-rectangle"></div>
  41. <div className="r-b-rectangle"></div>
  42. <div className="pl-144 pt-36px">
  43. <div className="divider">
  44. <div className="flex-center">
  45. <h1 style={{ letterSpacing: "1px" }}>Korisnik</h1>
  46. <div
  47. className="vr"
  48. style={{
  49. margin: "0px 10px 0px 15px",
  50. top: "6px",
  51. backgroundColor: "#252525",
  52. }}
  53. ></div>
  54. <h3
  55. style={{
  56. letterSpacing: "0.75px",
  57. position: "relative",
  58. top: "4px",
  59. }}
  60. className="text-blue"
  61. >
  62. Stefan Stamenkovic
  63. </h3>
  64. </div>
  65. <div className="flex-center">
  66. <IconButton
  67. className={
  68. "c-btn--primary-outlined c-btn userPageBtn ml-20px no-padding"
  69. }
  70. onClick={() => handleReset("meris.ahmatovic@dilig.net")}
  71. >
  72. Resetuj password
  73. <img
  74. style={{
  75. position: "relative",
  76. top: -0.25,
  77. paddingLeft: "10px",
  78. }}
  79. src={lock}
  80. />
  81. </IconButton>
  82. <IconButton
  83. className={
  84. "c-btn--primary-outlined c-btn userPageBtn ml-20px no-padding"
  85. }
  86. >
  87. Blokiraj
  88. <img
  89. style={{
  90. position: "relative",
  91. top: -0.25,
  92. paddingLeft: "10px",
  93. }}
  94. src={forbiden}
  95. />
  96. </IconButton>
  97. <IconButton
  98. className={
  99. "c-btn--primary-outlined c-btn userPageBtn ml-20px no-padding"
  100. }
  101. onClick={deleteHandler}
  102. >
  103. Obrisi
  104. <img
  105. style={{
  106. position: "relative",
  107. top: -0.25,
  108. paddingLeft: "10px",
  109. }}
  110. src={filters}
  111. />
  112. </IconButton>
  113. <IconButton
  114. className={
  115. "c-btn--primary-outlined c-btn userPageBtn ml-20px no-padding"
  116. }
  117. >
  118. Uredi profil
  119. <img
  120. style={{
  121. position: "relative",
  122. top: -0.25,
  123. paddingLeft: "10px",
  124. }}
  125. src={filters}
  126. />
  127. </IconButton>
  128. </div>
  129. </div>
  130. <div className="flex-center" style={{ justifyContent: "flex-start" }}>
  131. <img
  132. src={avatar}
  133. height="108px"
  134. width="108px"
  135. style={{ margin: "18px 15px 36px 0px" }}
  136. />
  137. <p>HR Specialist</p>
  138. </div>
  139. <div style={{ display: "flex", flexDirection: "column", gap: "18px" }}>
  140. <p style={{ fontWeight: "600" }}>Kontakt</p>
  141. <div className="flex-center" style={{ justifyContent: "flex-start" }}>
  142. <p style={{ width: "85px" }}>Email:</p>
  143. <p className="text-blue">stameni@dilig.net</p>
  144. </div>
  145. <div className="flex-center" style={{ justifyContent: "flex-start" }}>
  146. <p style={{ width: "85px" }}>Telefon:</p>
  147. <p className="text-blue">0628264606</p>
  148. </div>
  149. </div>
  150. <div
  151. style={{
  152. display: "flex",
  153. flexDirection: "column",
  154. gap: "18px",
  155. paddingTop: "36px",
  156. }}
  157. >
  158. <p style={{ fontWeight: "600" }}>Drustvene mreze</p>
  159. <div className="flex-center" style={{ justifyContent: "flex-start" }}>
  160. <p style={{ width: "85px" }}>LinkedIn:</p>
  161. <p className="text-blue">https://www.linkedin.com/in/stamenis/</p>
  162. </div>
  163. </div>
  164. <div
  165. style={{
  166. display: "flex",
  167. justifyContent: "flex-end",
  168. marginTop: "150px",
  169. }}
  170. >
  171. <Link to={"/users"} className="text-blue">
  172. Nazad na listu korisnika
  173. </Link>
  174. </div>
  175. </div>
  176. </div>
  177. );
  178. };
  179. export default UserDetails;
  180. UserDetails.propTypes = {
  181. history: PropTypes.shape({
  182. replace: PropTypes.func,
  183. push: PropTypes.func,
  184. location: PropTypes.shape({
  185. pathname: PropTypes.string,
  186. }),
  187. }),
  188. };