@Transactional(readOnly = false)
 @RequestMapping(
     value = "/editcontact",
     method = {RequestMethod.POST, RequestMethod.GET})
 public void contacteditor(
     @RequestParam String oper,
     @RequestParam long ID,
     Contact contact,
     BindingResult result,
     HttpServletResponse response)
     throws IOException {
   if (result.hasErrors()) {
     response.sendError(400, result.toString());
     return;
   }
   switch (oper) {
     case "add":
       {
         Counterparty counterparty = counterpartyRepository.findOne(ID);
         if (counterparty != null) {
           counterparty.addContact(contact);
           contactRepository.save(contact);
           counterpartyRepository.save(counterparty);
           response.setStatus(200);
         } else {
           response.sendError(404, "NO COUNTERPART WITH ID " + ID + " FOUND");
         }
       }
       break;
     case "edit":
       {
         Contact agr = contactRepository.findOne(contact.getId());
         if (agr != null && agr.getVersion() <= contact.getVersion()) {
           agr.setContact(contact.getContact());
           agr.setContactType(contact.getContactType());
           contactRepository.save(agr);
           response.setStatus(200);
         } else {
           response.sendError(404, "NO Agreement WITH ID " + contact.getId() + " FOUND");
         }
       }
       break;
     case "del":
       {
         Counterparty counterparty = counterpartyRepository.findOne(ID);
         if (counterparty != null) {
           Contact agr = contactRepository.findOne(contact.getId());
           if (agr != null) {
             counterparty.removeContact(agr);
             contactRepository.delete(agr);
             counterpartyRepository.save(counterparty);
             response.setStatus(200);
           } else {
             response.sendError(404, "NO Agreement WITH ID " + contact.getId() + " FOUND");
           }
         } else {
           response.sendError(404, "NO COUNTERPART WITH ID " + ID + " FOUND");
         }
       }
       break;
     default:
       response.sendError(406, "UNKNOWN OPERATION");
   }
 }