Exemple #1
0
        public IHttpActionResult Save([FromBody] CustomerSaveModel model)
        {
            var customers = _context.Select <Customer>().ToList();

            foreach (var customer in customers)
            {
                if (customer.Name == model.Name)
                {
                    customer.Address = model.Address;
                    _context.Update(customer);
                    return(Ok(customer));
                }
            }

            var newCustomer = new Customer
            {
                Name        = model.Name,
                Address     = model.Address,
                CreatedAt   = DateTime.Now,
                CreatedById = model.CreatedBy
            };

            _context.Insert(newCustomer);

            return(Ok(newCustomer));
        }
Exemple #2
0
        private Customer CreateUpdateCustomer(CustomerSaveModel customerSaveModel)
        {
            Customer customer;

            if (customerSaveModel.Id == 0)
            {
                customer = new Customer();
            }
            else
            {
                customer = _unitOfWork.CustomerRepository.Get(customerSaveModel.Id);
                if (customer == null)
                {
                    return(null);
                }
            }
            customer.Name            = customerSaveModel.Name;
            customer.Phone           = customerSaveModel.Phone;
            customer.Address         = customerSaveModel.Address;
            customer.NumberOfSchools = customerSaveModel.NumberOfSchools;
            customer.TypeId          = customerSaveModel.Type;
            customer.Comments        = customerSaveModel.Comments;
            customer.Email           = customerSaveModel.Email;
            _unitOfWork.CustomerRepository.Update(customer);
            return(customer);
        }
        /// <inheritdoc />
        public Task <Customer> Save(string name, string address)
        {
            var model = new CustomerSaveModel(name, address)
            {
                CreatedBy = Application.User.Id
            };

            return(_client.ExecuteAsync <Customer>(Controller, Method.POST, null, model));
        }
Exemple #4
0
        public async Task <Customer> CreateAsync(CustomerSaveModel customerModel)
        {
            var customer = new Customer();

            customerModel.ApplyToEntity(customer, dataStore, positionService);

            await dataStore.SaveAsync(customer);

            return(customer);
        }
Exemple #5
0
        public Customer Create(CustomerSaveModel customerModel)
        {
            var customer = new Customer();

            customerModel.ApplyToEntity(customer, dataStore, positionService);

            dataStore.Save(customer);

            return(customer);
        }
        public IActionResult SaveCustomer([FromBody] CustomerSaveModel customerSaveModel)
        {
            if (customerSaveModel != null)
            {
                var handler = new CreateUpdateCustomerHandler(_unitOfWork);
                handler.Execute(customerSaveModel);
            }

            return(new OkResult());
        }
        public async Task <HttpResponseMessage> Put(long id, CustomerSaveModel model)
        {
            if (model != null)
            {
                await customerService.UpdateAsync(id, model);

                return(Success());
            }

            return(Failure("Невозможно добавить пустой элемент"));
        }
Exemple #8
0
        public async Task UpdateAsync(long id, CustomerSaveModel customerModel)
        {
            var customer = dataStore.Get <Customer>(id);

            if (customer == null)
            {
                throw new EntityNotFoundException($"Запись типа {typeof(Customer).Name} c идентификатором {id} не существует");
            }

            customerModel.ApplyToEntity(customer, dataStore, positionService);

            await dataStore.SaveChangesAsync();
        }
Exemple #9
0
        /// <summary>
        /// Creates or updates customer
        /// </summary>
        /// <param name="customerSaveModel">Customer data of CustomerSaveModel type</param>
        /// <returns></returns>
        public bool Execute(CustomerSaveModel customerSaveModel)
        {
            using (var transaction = _unitOfWork.BeginTransaction())
            {
                Customer customer = CreateUpdateCustomer(customerSaveModel);

                if (customer == null)
                {
                    transaction.Rollback();
                    return(false);
                }

                var existingDepartments = customerSaveModel.Departments.Where(d => d.Id != 0)
                                          .Select(e => e.Id).ToList();
                RemoveCustomerDepartments(existingDepartments, customer.Id);

                List <Department> departments = new List <Department>();

                foreach (var departmentSaveModel in customerSaveModel.Departments)
                {
                    Department department = CreateUpdateDepartment(departmentSaveModel, customer);
                    if (department == null)
                    {
                        transaction.Rollback();
                        return(false);
                    }

                    departments.Add(department);
                }

                var existingUsers = customerSaveModel.Users.Where(d => !string.IsNullOrWhiteSpace(d.Id))
                                    .Select(e => e.Id).ToList();
                RemoveCustomerUsers(existingUsers, customer.Id);

                List <User> users = new List <User>();

                foreach (var userSaveModel in customerSaveModel.Users)
                {
                    User user = CreateUpdateUser(userSaveModel, customer, departments);
                    if (user == null)
                    {
                        transaction.Rollback();
                        return(false);
                    }

                    users.Add(user);
                }

                foreach (var department in departments)
                {
                    var departmentSM = customerSaveModel.Departments.FirstOrDefault(d => d.Name == department.Name);
                    var user         = users.FirstOrDefault(u => u.UserName == departmentSM.ManagerLogin);
                    if (department.DepartmentManager == null)
                    {
                        department.DepartmentManager = new DepartmentManager {
                            Department = department, User = user
                        };
                    }
                    else
                    {
                        department.DepartmentManager.User = user;

                        _unitOfWork.DepartmentManagerRepository.Update(department.DepartmentManager);
                    }
                }

                var existingContacts = customerSaveModel.Contacts.Where(d => d.Id != 0)
                                       .Select(e => e.Id).ToList();
                RemoveCustomerContacts(existingContacts, customer.Id);

                List <Contact> contacts = new List <Contact>();

                foreach (var contactSaveModel in customerSaveModel.Contacts)
                {
                    Contact contact = CreateUpdateContact(contactSaveModel, customer);
                    if (contact == null)
                    {
                        transaction.Rollback();
                        return(false);
                    }

                    contacts.Add(contact);
                }

                _unitOfWork.Save();
                transaction.Commit();
            }
            return(true);
        }
Exemple #10
0
        /// <summary>
        /// Частичное представление - открытие окна создания
        /// </summary>
        public ActionResult Create()
        {
            var model = new CustomerSaveModel();

            return(PartialView("Partial/Create", model));
        }
Exemple #11
0
        public void ApplyToEntity(Request request, IDataStore dataStore, IPositionService positionService,
                                  ICustomerService customerService)
        {
            if (request.Id == 0)
            {
                request.CreateDateTime = DateTime.Now;
            }

            request.PlannedDateTime = DateTime.Parse(this.PlannedDate);

            if (!string.IsNullOrEmpty(ExecutionDate))
            {
                request.ExecutionDateTime = DateTime.Parse(this.ExecutionDate);
            }

            request.Container = dataStore.FindById <Container>(this.ContainerId);
            request.Type      = this.Type;

            //"малые" контейнеры - забор через 3 дня, "большие" - через день
            var daysCountForUninstall = request.Container?.ContainerType.Capacity <= 8 ? 3 : 1;

            request.PlannedUninstallDateTime = string.IsNullOrEmpty(PlannedUninstallDate)
                ? (request.Type == RequestType.Install ? request.PlannedDateTime.AddDays(daysCountForUninstall) : (DateTime?)null)
                : DateTime.Parse(this.PlannedUninstallDate);

            request.Address            = this.Address;
            request.ContactPersonName  = this.ContactPersonName;
            request.ContactPersonPhone = this.ContactPersonPhone;
            request.Comment            = this.Comment;
            request.Status             = this.Status;
            request.PaymentType        = this.PaymentType;
            request.IsPaid             = this.IsPaid ? Enums.IsPaid.Yes : Enums.IsPaid.No;
            request.Sum = this.Sum;

            request.Polygon  = dataStore.FindById <Polygon>(this.PolygonId);
            request.Customer = dataStore.FindById <Customer>(this.CustomerId);
            request.Car      = dataStore.FindById <Car>(this.CarId);
            request.Driver   = dataStore.FindById <Driver>(this.DriverId);

            if (request.PositionId.HasValue)
            {
                positionService.Update(request.PositionId.Value, PositionLatitude, PositionLongitude);
            }
            else
            {
                request.Position = positionService.Create(PositionLatitude, PositionLongitude);
            }

            //создаем нового
            if (this.CustomerId == "0")
            {
                var customerDbEntity = customerService.GetAllCustomerModels(null)
                                       .FirstOrDefault(x => x.Phone == CustomerPhone);

                if (customerDbEntity == null)
                {
                    var createModel = new CustomerSaveModel
                    {
                        Address            = this.Address,
                        ContactPersonPhone = this.ContactPersonPhone,
                        ContactPersonName  = this.ContactPersonName,
                        Name              = this.CustomerName,
                        Phone             = this.CustomerPhone,
                        PositionLatitude  = request.Position?.Latitude,
                        PositionLongitude = request.Position?.Longitude
                    };
                    var customer = customerService.Create(createModel);

                    request.CustomerId = customer.Id;
                }
                else
                {
                    request.CustomerId = customerDbEntity.Id;
                }
            }

            request.Address            = Address;
            request.ContactPersonName  = ContactPersonName;
            request.ContactPersonPhone = ContactPersonPhone;
        }